字符串相加
num1 > 0 && num2 > 0
public static String addString(String num1, String num2) {
StringBuilder builder = new StringBuilder();
int carry = 0;
for(int i = num1.length()-1, j = num2.length()-1; i >= 0 || j >= 0 || carry == 1; i--, j--) {
int x = i >= 0 ? num1.charAt(i)-'0' : 0;
int y = j >= 0 ? num2.charAt(j)-'0' : 0;
int val = x + y + carry;
builder.append(val % 10);
carry = val / 10;
}
return String.valueOf(builder.reverse());
}
字符串相减
num1 >= num2 >= 0
public static String minusString(String num1, String num2) {
StringBuilder builder = new StringBuilder();
int difference = 0;
for(int i = num1.length()-1, j = num2.length()-1; i >= 0; i--, j--) {
int x = num1.charAt(i)-'0';
int y = j >= 0 ? num2.charAt(j)-'0' : 0;
int val = x >= (y+difference) ? x - (y+difference) : 10+x-(y+difference);
builder.append(val);
difference = x >= y ? 0 : 1;
}
String res = String.valueOf(builder.reverse());
int index = 0;
for(index = 0; index < res.length(); index++) {
if(res.charAt(index) != '0') {
break;
}
}
return index == res.length() ? "0" : res.substring(index, res.length());
}