Multiply Strings
Q:
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note: The numbers can be arbitrarily large and are non-negative.
A: 用字符串模拟数字相乘。
keyPoints:1.先把字符串转换成int数组,再对位相乘。
2.将int数组转换成字符串。
注意:这里字符串第0位表示的应是数字的高位,所以最后需要将字符串reverse一下
string multiply(string num1, string num2) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(num1.empty()||num2.empty())
return "";
if(num1[0]=='0'||num2[0]=='0')
return "0";
string str("");
int m = num1.size();
int n = num2.size();
vector<int> res(m+n-1,0); //注意是m+n-1位int数组即可
vector<int> vnum1(m);
vector<int> vnum2(n);
int i,j;
for(i=0;i<m;i++)
vnum1[i] = num1[i]-'0';
for(i=0;i<n;i++)
vnum2[i] = num2[i]-'0';
for(i=0;i<m;i++)
for(j=0;j<n;j++)
res[i+j] += vnum1[i]*vnum2[j];
int carry = 0;
for(i=m+n-2;i>=0;--i)
{
str+=((res[i]+carry)%10+'0');
carry = (res[i]+carry)/10;
}
if(carry!=0)
str+=(carry+'0');
return string(str.rbegin(),str.rend()); //注意不要忘记reverse字符串,因为str的第0位表示的是结果的低位,所以需要reverse
}
浙公网安备 33010602011771号