LeetCode 43. 字串相乘
阿新 • • 發佈:2020-08-13
題目描述連結: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; } };