2个字符串相乘

1 声明一个数组,从后面个位开始乘  ivec[i+j+1] += (num[i]-'0')*(nums[j] - '0')

2 统一进位

3 清空左边的0

class Solution {
public:
    string multiply(string num1, string num2) {
        size_t size1=num1.size();
        size_t size2=num2.size();
        vector<int> ivec(size1+size2,0);
        string res;
        if(size1<=0||size2<=0){
            return res;
        }else if(num1=="0"||num2=="0"){
            return "0";
        }
        for(int i=size1-1;i>=0;i--){
            for(int j=size2-1;j>=0;j--){
                ivec[i+j+1]+=(num1[i]-'0')*(num2[j]-'0');//这里不是等于而是+=
            }
        }
        int carry=0;
        for(int i=ivec.size()-1;i>=0;i--){
            ivec[i]+=carry;
            carry=ivec[i]/10;
            ivec[i]=ivec[i]%10;
        }
        int left=0;
        for(left=0;left<ivec.size();left++){
            if(ivec[left]!=0){
                break;
            }
        }
        while(left<ivec.size()){
            res.push_back(ivec[left]+'0');
            left++;
        }
        
        return res;
    }
        
};

猜你喜欢

转载自blog.csdn.net/u010325193/article/details/86325908