字符串相乘
两个任意长的数字字符串相乘,不为负数,结果返回一个字符串。任意长,意味着不可能转为整数在相乘,只能逐位乘得到结果。注意,每一次相乘的结果都会往左边挪动以为在和前一位的结果相加。下面是实现代码:
string multipyString(string num1,string num2){
string sum(num1.size() + num2.size(), '0');
for (int i = num1.size() - 1; 0 <= i; --i) {
int carry = 0;
for (int j = num2.size() - 1; 0 <= j; --j) {
int tmp = (sum[i + j + 1] - '0') + (num1[i] - '0') * (num2[j] - '0') + carry;
sum[i + j + 1] = tmp % 10 + '0';
carry = tmp / 10;
}
sum[i] += carry;
}
size_t startpos = sum.find_first_not_of("0");
if (string::npos != startpos) {
return sum.substr(startpos);
}
return "0";
}