题目描述
以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。
(字符串长度不大于10000,保证字符串仅由’0’~'9’这10种字符组成)
题解:
高精度问题的基本模板
本质就是模拟手算乘法的过程,先乘对应位,然后%10进位
虽然是模板,但是我调了好久。。不知道哪错了
代码:
class Solution {
public:
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param s string字符串 第一个整数 * @param t string字符串 第二个整数 * @return string字符串 */
string solve(string s, string t) {
// write code here
if(s=="0"||t=="0")return "0";
int len1=s.size();
int len2=t.size();
string a="";
vector<int>num(len1+len2,0);
for(int i=len1-1;i>=0;i--)
{
for(int j=len2-1;j>=0;j--)
{
num[i+j+1]+=(s[i]-'0')*(t[j]-'0');
num[i+j]+=num[i+j+1]/10;
num[i+j+1]%=10;
}
}
int i=0;
bool f=0;
while(i<num.size())
{
if(i==0&&num[i]!=0)f=1;
if(num[i]==0&&f==0)
{
i++;
f=1;
}
else a.push_back(num[i++]+'0');
}
return a;
}
};