LeetCode 43. 字符串相乘

题目描述链接:https://leetcode-cn.com/problems/multiply-strings/

基本思路:num1[i]*num2[j]的结果在ans[i+j+1]中,由此得到基本框架,最后若大于10则向前一位进位处理。

LeeCode C++ 求解代码如下:

class Solution {
public:
    string multiply(string num1, string num2) {
     
       int len1=num1.size();
       int len2=num2.size();
       vector<int>res(len1+len2);
       
       if(num1=="0"||num2=="0"){
           return "0";
       }

       for(int i=len2-1;i>=0;i--){
           int temp1=num2[i]-'0';
           for(int j=len1-1;j>=0;j--){
               int temp2=num1[j]-'0';
               res[i+j+1]+=temp1*temp2;
           }
       }
       for(int i=len1+len2-1;i>=1;i--){
           int cnt=res[i]/10;
           res[i]%=10;
           res[i-1]+=cnt;
       }
       int index=res[0]==0?1:0;
       string ans="";
    
        while (index < len1 + len2) {
            ans.push_back(res[index]);
            index++;
        }
        for (auto &c: ans) {
            c += '0';
        }

       return ans;


    }
};
原文地址:https://www.cnblogs.com/zzw-/p/13498272.html