leetcode 43. Multiply Strings 大数乘法

Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.

Example 1:

Input: num1 = “2”, num2 = “3”
Output: “6”
Example 2:

Input: num1 = “123”, num2 = “456”
Output: “56088”
Note:

The length of both num1 and num2 is < 110.
Both num1 and num2 contain only digits 0-9.
Both num1 and num2 do not contain any leading zero, except the number 0 itself.
You must not use any built-in BigInteger library or convert the inputs to integer directly.

大数乘法:

class Solution {
public:
    string multiply(string num1, string num2) {
        int len1=num1.length(),len2=num2.length();
        string res(len1+len2, '0');
        for(int i=len1-1;i>=0;i--){
            int carry=0;
            for(int j=len2-1;j>=0;j--){
                int tmp=res[i+j+1]-'0'+(num1[i]-'0')*(num2[j]-'0');
                res[i+j+1]=tmp%10+'0';
                res[i+j]+=tmp/10;
            }
        }
        for(int i=0;i<len1+len2;i++)
            if(res[i]!='0')
                return res.substr(i);
        return "0";
    }
};
posted @ 2020-07-26 09:14  winechord  阅读(71)  评论(0编辑  收藏  举报