个人思路总结:
其实这个题就是华为经常爱考的大数相乘类型题。
==一个数乘以一个数的结果长度必定小于或者等于这个两个数长度之和。==这个是关键点,一定要弄清楚。
具体还是看代码吧,较简单。
其中有个小关键点,就是最后的int类型转string类型,在c++11中,有to_string(int)这个函数,可以将int转string。
代码如下:
class Solution {
public:
string multiply(string num1, string num2) {
int len1 = num1.size();
int len2 = num2.size();
// 存储相乘后的数组的长度为len1+len2-1
vector<int> result(len1+len2-1);
string ans = "";
int tmp = 0;
if(num1=="0"||num2=="0")
return "0";
for(int i=0;i<len1;i++)
{
for(int j=0;j<len2;j++)
result[i+j] += (num1[i]-'0')*(num2[j]-'0');
}
int len = result.size();
for(int i=len-1;i>0;i--)
{
tmp = result[i]/10;
result[i] = result[i]%10;
result[i-1]+=tmp;
}
for(int i=0;i<len;i++)
//int转string
ans +=to_string(result[i]);
return ans;
}
};