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 }