LeetCode 43 字符串相乘

Posted 想用包子换论文

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 43 字符串相乘相关的知识,希望对你有一定的参考价值。

LeetCode43 字符串相乘

题目描述

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

样例

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

算法分析

  • A[i],B[i],逆序存储,A[i]*B[j] = C[i+j]
  • 存储之后,在标准化,每一位是十进制化
  • 找到第一个不为零的

时间复杂度

Java代码

class Solution {
    public String multiply(String num1, String num2) {
        if(num1.equals("0") || num2.equals("0")) return "0";
        int n = num1.length();
        int m = num2.length();
        int[] a = new int[n];
        int[] b = new int[m];
        for(int i=0;i<n;i++){
            a[i] = num1.charAt(n-i-1) - ‘0‘;
        }
        for(int j=0;j<m;j++){
            b[j] = num2.charAt(m-j-1) - ‘0‘;
        }
        int[] c = new int[n+m];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                c[i+j] += a[i]*b[j];
            }
        }

        int t = 0;
        for(int i = 0; i<n+m; i++){
            t += c[i];
            c[i] = t%10;
            t/=10;
        }
        int k = n+m-1;
        while(k>=0 && c[k]==0) k--;


        StringBuilder sb = new StringBuilder("");
        for(int i = k; i>=0; i--){
            sb.append(c[i]);
        }
        return sb.toString();

    }
}

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

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

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

LeetCode 43 字符串相乘

Python描述 LeetCode 43. 字符串相乘

LeetCode(43):字符串相乘

LeetCode 43.字符串相乘