1 大数乘法
1.1 题目描述
https://leetcode.cn/problems/multiply-strings/
1.2 code
package org.example.atomicfieldupdater;
public class Multi {
public static String multi(String a, String b) {
if (a == null || b == null) {
return "0";
}
if (a.equals("0") || b.equals("0")) {
return "0";
}
String aa = new StringBuilder(a).reverse().toString();
String bb = new StringBuilder(b).reverse().toString();
String[] resultArr = new String[aa.length() + bb.length()];
for (int i = 0; i < resultArr.length; i++) {
resultArr[i] = "0";
}
int resultIndex = 0;
int carry = 0;
for (int i = 0; i < aa.length(); i++) {
int tempA = aa.charAt(i) - '0';
resultIndex = i;
for (int j = 0; j < bb.length(); j++) {
int tempB = bb.charAt(j) - '0';
int tempRes = tempA * tempB + carry + Integer.parseInt(resultArr[resultIndex]);
if (tempRes < 10) {
resultArr[resultIndex] = String.valueOf(tempRes);
resultIndex++;
carry = 0;
} else {
resultArr[resultIndex] = String.valueOf(tempRes % 10);
resultIndex++;
carry = tempRes / 10;
}
}
if (carry > 0) {
resultArr[resultIndex++] = String.valueOf(carry);
carry = 0;
}
}
StringBuilder builer = new StringBuilder();
for (int i = 0; i < resultIndex; i++) {
builer.append(resultArr[i]);
}
return builer.reverse().toString();
}
public static void main(String[] args) {
// System.out.println(multi("33", "5"));
// System.out.println(multi("33", "0"));
// System.out.println(multi("33", "33"));
// System.out.println(multi("33", "333"));
// System.out.println(multi("99", "999"));
// System.out.println(multi("3", "2"));
System.out.println(multi("123", "456"));
System.out.println(multi("21", "83"));
System.out.println(multi("218", "836"));
System.out.println(multi("1000000000", "1000000000"));
}
}