public String addStrings(String num1, String num2) {
if(num2.length() > num1.length()) {
String temp = new String(num1);
num1 = num2;
num2 = temp;
}
char[] ch1 = num1.toCharArray();
char[] ch2 = num2.toCharArray();
int i = ch1.length - 1, j = ch2.length - 1;
while(i >= 0 && j >= 0) {
ch1[i] = (char) (ch1[i] + ch2[j] - '0');
i--;
j--;
}
i = ch1.length - 1;
while(i > 0) {
if(ch1[i] >= 10 + '0') {
ch1[i - 1] = (char) (ch1[i - 1] + 1);
ch1[i] = (char) (ch1[i] - 10);
}
i--;
}
StringBuffer sb = new StringBuffer();
if(ch1[0] >= 10 + '0') {
sb.append(1);
ch1[0] = (char) (ch1[0] - 10);
}
sb.append(ch1);
return sb.toString();
}
本题的关键点:
1.选择num1作为长度较长的那个字符串
2.从后往前同时遍历num1和num2,num1 = num1[i] + num2[j]
3.再次从后往前遍历num1,如果num1[i] >= 10,则num1[i] -= 10,num1[i - 1]++;
4.检查num1[0]是否大于等于10,如果是,则前面要进1
ps:这题也有其他类似的题,都是可以举一反三的