求两个字符串相加之和,其结果用字符串表示:
num1=“1999”
num2=“1009”
res=“2908”
关键点:
- 两个字符串相加,不能转为整形,因为可能溢出
- 如果两个字符串不等长,用0补齐短的
- for循环从右往左相加,用rest=0或者1来代表是否需要进位
- 循环完成后,判断rest是0还是1,进而判断是否需要进位
代码:
public class TwoStrPlus {
public static void main(String[] args) {
System.out.println(strPlus("1231", "9000"));
}
private static String strPlus(String num1,String num2) {
int len1 = num1.length();
int len2 = num2.length();
String smallStr = len1 > len2 ? num2 : num1;
String longStr = len1 > len2 ? num1 : num2;
StringBuilder implement0 = new StringBuilder();
for(int i =0; i < Math.abs(len1-len2); i++) {
implement0.append("0");
}
smallStr = implement0.toString() + smallStr;
num1 = longStr;
num2 = smallStr;
StringBuilder sb = new StringBuilder();
int rest = 0;
int len = num1.length();
for (int i = 0; i < len ; i++) {
char c1 = num1.charAt(len - 1 - i);
char c2 = num2.charAt(len - 1 - i);
int sum = c1 + c2 - 96 + rest;
if (sum >= 10) {
sb.append(sum % 10);
rest = 1;
} else {
sb.append(sum);
rest = 0;
}
}
if (rest == 0) {
return sb.reverse().toString();
} else {
return sb.append(1).reverse().toString();
}
}
}