LeetCode 字符串相乘

Posted jkzr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    }
};

 

以上是关于LeetCode 字符串相乘的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode]415. 字符串相加43. 字符串相乘

精选力扣500题 第72题 LeetCode 43. 字符串相乘c++/java详细题解

LeetCode 43 字符串相乘

LeetCode 43. 字符串相乘(Multiply Strings)

《LeetCode之每日一题》:123.字符串相乘

LeetCode - 字符串数字相乘与相加