字符串乘法问题总结
程序员文章站
2022-05-06 08:50:06
...
公式模版
for(num1){
for(num2){
res[i + j + 1] = sum % 10;
res[i + j] = res[i + j] + sum / 10;
}
}
问题分析
- 数组承载计算结果
- 计算结果落在数组中i+j和i+j+1的位置
public String multiply(String num1, String num2) {
if (num1.equals("0") || num2.equals("0")) {
return "0";
}
int length1 = num1.length();
int length2 = num2.length();
int[] res = new int[length1 + length2];
for (int i = length1 - 1; i >= 0; i--) {
for (int j = length2 - 1; j >= 0; j--) {
int n1 = num1.charAt(i) - '0';
int n2 = num2.charAt(j) - '0';
int sum = n1 * n2 + res[i + j + 1];
res[i + j + 1] = sum % 10;
res[i + j] = res[i + j] + sum / 10;
}
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < res.length; i++) {
if (i == 0 && res[0] == 0) {
continue;
}
stringBuilder.append(res[i]);
}
return stringBuilder.toString();
}
上一篇: JVM 模拟Young GC及日志分析
下一篇: Java并发编程的那些事-简版