码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 字符串相乘

时间:2019-03-29 16:07:25      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:解法   ems   输入   nbsp   形式   +=   inf   image   code   

给定两个以字符串形式表示的非负整数 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;
    }
};

 

LeetCode 字符串相乘

标签:解法   ems   输入   nbsp   形式   +=   inf   image   code   

原文地址:https://www.cnblogs.com/jkzr/p/10621843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!