415. 字符串相加

135 阅读1分钟

思路:模拟加法

考虑“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’