被乘数从右往左遍历,每一位与乘数相乘,得到的一系列值通过补零右对齐,然后执行大数的加法运算。

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;
    }
};