代码
public String addStrings(String num1, String num2) {
if (num1 == null) {
return num2;
}
if (num2 == null) {
return num1;
}
int min = Math.min(num1.length(), num2.length());
int abs = Math.abs(num1.length() - num2.length());
if (num1.length() == min) {
num1 = fillZero(abs) + num1;
}
if (num2.length() == min) {
num2 = fillZero(abs) + num2;
}
boolean carry = false;
boolean lastCarry = false;
StringBuilder result = new StringBuilder();
for (int i = num1.length() - 1; i >= 0; i--) {
int plus = Integer.parseInt(String.valueOf(num1.charAt(i))) + Integer.parseInt(String.valueOf(num2.charAt(i)));
if (carry) {
plus += 1;
}
if (plus > 9) {
carry = true;
} else {
carry = false;
}
result.append(plus % 10);
if (i == 0 && carry ) {
lastCarry = true;
}
}
String finalString = lastCarry ? "1" + result.reverse() : result.reverse().toString();
System.out.println(String.format("%s + %s = %s", num1, num2, finalString));
return finalString;
}
public String fillZero(int abs) {
StringBuilder zero = new StringBuilder();
for (int i = 0; i < abs; i++) {
zero.append("0");
}
return zero.toString();
}
总结
- 常规的思路就可以解决
- 先把计算做分解
- 高位补0或者截取高位都可以处理,但是细想一下补0更方便