43 字符串相乘

在這裏插入圖片描述

class Solution {
public:
//力扣415字符串相加
    string addStrings(string num1, string num2) {
       int n=num1.size();
       int m=num2.size();
      
       int i=n-1;
       int j=m-1;
       string str;
       int carry=0;
       while(i>=0||j>=0){
            int n1=i>=0?num1[i]-'0':0;
            int n2=j>=0?num2[j]-'0':0;
            int res=n1+n2+carry;
            str+=(char)(res%10+'0');
    
            carry=res/10;
            i--;
            j--;     
       }
        if(carry!=0) str+=(char)(carry+'0');
           reverse(str.begin(),str.end());
       return str;
    }
//字符串相乘
    string multiply(string num1, string num2) {
        if(num1=="0"||num2=="0")
            return "0";
        int n=num1.size();
        int m=num2.size();
        
        int i=n-1;
        // int j=m-1;
       vector<string> str(n);
        while(i>=0){
            int carry=0;
            int j=m-1;
            int n1=num1[i]-'0';
            // str[i].resize(m);
            while(j>=0){
                int n2=num2[j]-'0';
                
                int res=n1*n2+carry;
                str[i]+=(char)(res%10+'0');
                carry=res/10;
                j--;
            }
            if(carry!=0)
            str[i]+=(char)(carry+'0');
            reverse(str[i].begin(),str[i].end());
            int zeronum=n-i;
            while(--zeronum>0) str[i]+='0';
            
            // cout<<str[i]<<endl;
            i--;
        }
        string str_final=str[0];
        for(i=1;i<n;i++)
            str_final=addStrings(str_final,str[i]);
  
        return str_final;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章