思路:模拟加法
考虑“903” + “99” 的情况即可。
优化后
class Solution {
public String addStrings(String num1, String num2) {
StringBuffer res = new StringBuffer();
int carry = 0;//进位
int i = num1.length() - 1;
int j = num2.length() - 1;
while (i >= 0 || j >= 0 || carry != 0) {//合并优化
int digit1 = i < 0 ? 0 : (num1.charAt(i) - '0');//char转int,直接-’0‘
int digit2 = j < 0 ? 0 : (num2.charAt(j) - '0');
int sum = carry + digit1 + digit2;
int cur = sum % 10;
carry = sum / 10;
res.append(Integer.toString(cur));//int转string
i--;
j--;
}
return res.reverse().toString();//翻转stringbuffer
}
}
- StringBuffer 可以直接reverse
- char转int直接 - ‘0’