先写个单数位的乘法,再把所有的结果错位后加起来

/*
@v7fgg
运行时间:224ms超过0.41% 用Java提交的代码
占用内存:19564KB超过3.76%用Java提交的代码
2022年2月12日 12:01
*/
import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param s string字符串 第一个整数
     * @param t string字符串 第二个整数
     * @return string字符串
     */
    public String solve (String s, String t) {
        // write code here
        if(s.equals("0")||t.equals("0")){return "0";}
        String ans="0";
        StringBuilder sb=new StringBuilder(t);
        for(int i=0;i<s.length();i++){
            char c=s.charAt(s.length()-1-i);            
            if(i>0){sb.append("0");}
            ans=add(ans,multiplyOneDigit(c,sb.toString()));
        }
        return ans;
    }
    public String multiplyOneDigit(char c,String s){
        if(c=='0'){return "0";}
        int k=c-'0';
        int carry=0;
        StringBuilder ans=new StringBuilder();
        for(int i=s.length()-1;i>=0;i--){
            int sum=carry+k*(s.charAt(i)-'0');
            ans.append(sum%10);
            carry=sum/10;
        }
        if(carry>0){ans.append(carry);}
        return ans.reverse().toString();
    }
    public String add(String s,String t){
        if(s.length()<=t.length()){
            StringBuilder ans=new StringBuilder();
            int carry=0,i=s.length()-1,j=t.length()-1;
            while(i>=0){
                int sum=s.charAt(i)+t.charAt(j)-2*'0'+carry;
                ans.append(sum%10);
                carry=sum/10;
                i--;
                j--;
            }
            while(j>=0){
                int sum=t.charAt(j)-'0'+carry;
                ans.append(sum%10);
                carry=sum/10;
                j--;
            }
            if(carry==1){ans.append("1");}
            return ans.reverse().toString();
        }
        return add(t,s);
    }
}