43. 字符串相乘https://leetcode.cn/problems/multiply-strings/
给定两个以字符串形式表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。
示例 1:
输入: num1 = "2", num2 = "3" 输出: "6"
示例 2:
输入: num1 = "123", num2 = "456" 输出: "56088"
提示:
1 <= num1.length, num2.length <= 200
num1
和num2
只能由数字组成。num1
和num2
都不包含任何前导零,除了数字0本身。
package demo;
public class multiply {
public static void main(String[] args) {
String s1 = "123",s2 = "45";
System.out.println(multiply(s1, s2));
}
public static String multiply(String num1,String num2) {
StringBuilder s = new StringBuilder();
int i = num1.length()-1,j = num2.length()-1;
int[] n = new int[i+j+2];
for (i = num1.length()-1; i >= 0; i--) {
for (j = num2.length()-1; j >= 0; j--) {
int chary = (num1.charAt(i)-'0') * (num2.charAt(j)-'0');
chary += n[i+j+1];//加最后一位,判断进位
n[i+j] += chary/10;
n[i+j+1] = chary%10;
}
}
int flag = 0;
for (int k = 0; k < n.length; k++) {
if(flag==0&&n[k]==0) {
continue;
}else {
flag = 1;
}
s.append(n[k]);
}
return s.toString();
}
}