leetcode Multiply Strings

来源:互联网 发布:lnmp一键 安装php扩展 编辑:程序博客网 时间:2024/06/08 05:09

题目:

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.

这道题是利用string来模拟乘法,代码如下:

class Solution {public:string add(string s1, string s2){if (s2.empty()){return s1;}if (s1.empty()){return s2;}int carry = 0;int m = s1.size();int n = s2.size();reverse(s1.begin(), s1.end());reverse(s2.begin(), s2.end());string result;for (int i = 0; i < m || i < n; i++){int m1 = i < m ? s1[i] - '0' : 0;int m2 = i < n ? s2[i] - '0' : 0;int sum = m1 + m2 + carry;carry = sum / 10;result.push_back(sum % 10 + '0');}if (carry){result.push_back(carry + '0');}reverse(result.begin(), result.end());return result;}string multiply(string num1, string num2){int m = num1.size();int n = num2.size();reverse(num1.begin(), num1.end());reverse(num2.begin(), num2.end());string result;for (int i = 0; i < m; i++){string tmp;int carry = 0;for (int j = 0; j < n; j++){int m1 = num1[i] - '0';int m2 = num2[j] - '0';int sum = m1 * m2 + carry;carry = sum / 10;tmp.push_back(sum % 10 + '0');}if (carry){tmp.push_back(carry + '0');}reverse(tmp.begin(), tmp.end());for (int k = 0; k < i; k++){tmp.push_back('0');}result = add(result, tmp);}if (result[0] == '0'){return "0";}return result;}};


0 0
原创粉丝点击