LeetCode 字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。

示例 1:

输入: num1 = "2", num2 = "3"
输出: "6"

示例 2:

输入: num1 = "123", num2 = "456"
输出: "56088"

解法:模拟数字乘法。
参照这个图理解一下代码就可以了
class Solution {
public:
    string multiply(string num1, string num2) {
        if(num1=="0" || num2=="0")
            return "0";
        int len1=num1.length();int len2=num2.length();
        int a[len1+len2];
        memset(a,0,sizeof(a));
        int flag=0;int t=len1+len2-2;
        for(int i=0;i<len1;i++)
            for(int j=0;j<len2;j++)
                a[t-i-j]+=((num1[i]-'0')*(num2[j]-'0'));
        for(int i=0;i<len1+len2;i++)
        {
            a[i]+=flag;
            flag=a[i]/10;
            a[i]%=10;
        }
        int i=len1+len2-1;
        while(a[i]==0)
            i--;
        string ans;
        if(i<0)
            return "0";
        while(i>=0)
            ans+=(a[i--]+'0');
        return ans;
    }
};

 

posted @ 2019-03-29 15:54  从让帝到the_rang  阅读(197)  评论(0编辑  收藏  举报