题目描述链接: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; } };