LeetCode 43 字符串相乘
Posted 想用包子换论文
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 43 字符串相乘相关的知识,希望对你有一定的参考价值。
LeetCode43 字符串相乘
题目描述
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
样例
输入: 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详细题解