题意:
以字符串的形式读入两个数字,编写一个函数计算它们的乘积,以字符串形式返回。
方法:
模拟
思路:重点:有个规律,两字符串相乘,则答案数的字符串长度最大为两字符串的长度之和。
可以直接模拟相乘的竖式运算,累加相应位上的数即可。最后,注意要消除掉前缀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); } };
时间复杂度:空间复杂度: