被乘数从右往左遍历,每一位与乘数相乘,得到的一系列值通过补零右对齐,然后执行大数的加法运算。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param s string字符串 第一个整数
* @param t string字符串 第二个整数
* @return string字符串
*/
string str_plus(string str1,string str2){
string result{};
int i=str1.size()-1;
int j=str2.size()-1;
int carry=0;
while(i>=0 || j>=0 || carry!=0){
int a=i>=0 ? str1[i]-'0' : 0;
int b=j>=0 ? str2[j]-'0' : 0;
int sum=a+b+carry;
result.push_back(sum%10 + '0');
carry=sum/10;
i--;
j--;
}
reverse(result.begin(),result.end());
return result;
}
string solve(string s, string t) {
if(s=="0" || t=="0") return "0";
string result="0";
for(int i=t.size()-1;i>=0;i--){
string temp{};
int carry=0;
for(int j=t.size()-1;j>i;j--) temp+="0";
int b=t[i]-'0';
for(int j=s.size()-1;j>=0;j--){
int a=s[j]-'0';
int product=a*b+carry;
temp+=product%10 + '0';
carry=product/10;
}
while(carry!=0){
temp+=carry%10 + '0';
carry/=10;
}
reverse(temp.begin(),temp.end());
result=str_plus(result, temp);
}
return result;
}
};