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.
用字符串表示的整数,做乘法运算。
如人工做乘法运算的步骤一样,实现了本算法。
在leetcode上实际执行时间为12ms。
class Solution { public: string multiply(string num1, string num2) { if (num1.empty() || num2.empty()) return ""; vector<int> temp(num1.size()+num2.size()); for (int i=num1.size()-1; i>=0; i--) { int k = temp.size()-num1.size()+i; int carry = 0; const int digit1 = num1[i] - '0'; for (int j=num2.size()-1; j>=0; j--, k--) { temp[k] += digit1 * (num2[j] - '0') + carry; carry = temp[k] / 10; temp[k] %= 10; } while (carry) { temp[k] += carry; carry = temp[k] / 10; temp[k] %= 10; k--; } } string result; for (int i=0; i<temp.size(); i++) { if (temp[i] || !result.empty()) result += temp[i] + '0'; } return result.empty() ? "0" : result; } };
原文地址:http://blog.csdn.net/elton_xiao/article/details/42843201