package t1_50;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class t43 {
/**
* 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
*
* 示例 1:
*
* 输入: num1 = "2", num2 = "3"
* 输出: "6"
* 示例 2:
*
* 输入: num1 = "123", num2 = "456"
* 输出: "56088"
*
*/
public static void main(String[] args) {
String multiply = multiply("11", "11");
System.out.println(multiply);
}
public static String multiply(String num1, String num2) {
//当num1或者num2为0结果直接返回0
if("0".equals(num1)||"0".equals(num2)) return "0";
int n =num1.length();
int m =num2.length();
//定义一个stringbuilder
int[] ansArr =new int[n+m];
for (int i = n-1; i >=0 ; i--) {
int x = num1.charAt(i)-'0';
for (int j = m-1; j >=0 ; j--) {
int y =num2.charAt(j)-'0';
ansArr[i+j+1] +=x*y;
}
}
int t= n+m-1;
StringBuilder resStr=new StringBuilder();
while (t>0){
//处理进位
ansArr[t-1] += ansArr[t]/10;
ansArr[t] %=10;
t--;
}
int start = ansArr[0]==0?1:0;
for (int i = start; i <=n+m-1 ; i++) {
resStr.append(ansArr[i]);
}
return resStr.toString();
}
}
leetcode 0043 字符串相乘
最新推荐文章于 2022-08-14 00:02:46 发布