题意:
以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。
方法:
模拟
思路:重点:有个规律,两字符串相乘,则答案数的字符串长度最大为两字符串的长度之和。
可以直接模拟相乘的竖式运算,累加相应位上的数即可。最后,注意要消除掉前缀0。
class Solution {
public:
string solve(string s, string t) {
int n1=s.size(),n2=t.size();
string res(n1+n2,'0');
for(int i=n1-1;i>=0;i--){//二重循环
for(int j=n2-1;j>=0;j--){
int temp=(s[i]-'0')*(t[j]-'0')+res[i+j+1]-'0';//乘法运算
res[i+j+1]=temp%10+'0';
res[i+j]+=temp/10;//进位
}
}
int i=0;
while(res[i]=='0'&&i!=n1+n2-1){//消除前缀0
i++;
}
return res.substr(i);
}
};
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号