0
点赞
收藏
分享

微信扫一扫

字符串相乘

开源GIS定制化开发方案 2022-02-26 阅读 73
c++

input:

string s1("12");

string s2("12");

output:

"144";

class Solution {
public:
    string multiply(string num1, string num2) {
        if(num1.size()==1&&num1[0]=='0'||num2.size()==1&&num2[0]=='0')return "0";//边界条件
        int num1_sz=num1.size(),num2_sz=num2.size();
        vector<int>rec(num1_sz+num2_sz,0);                      //init
        reverse(num1.begin(),num1.end());
        reverse(num2.begin(),num2.end());                      //个位在前
        for(int i=0;i<num1_sz+num2_sz-1;++i){
            int temp=0;
            for(int j=0;j<num1.size()&&j<=i;++j){
                if(i-j<num2_sz){
                    temp+=(num1[j]-'0')*(num2[i-j]-'0');     //字符串中的字符转数字
                }
            }
            int tmp=temp+rec[i];
            rec[i]=tmp%10;
            rec[i+1]+=tmp/10;                                  //进位
        }
        if(rec.back()==0)rec.erase(rec.end()-1);              //去高位0
        reverse(rec.begin(),rec.end());
        // string s(rec.size(),'0');
        // for(int m=0;m<rec.size();++m){
        //     s[m]+=rec[m];
        // }
        string s;                                          //字符数组转字符串的两种写法
        for(auto i:rec)s.push_back(i);
        for(auto &ss:s)ss+='0';
        return s; 
    }
};

举报

相关推荐

0 条评论