算法系列--字符串--相加

143 阅读1分钟

字符串相加,考虑两个问题,一,进位,二,取值。

我们平常相加的时候,都是从后往前加,那字符串里面的位置不一样,他是按照0,1这样排的,我们要取最后面的话,就要是num.length()-1,这样才能取到最末尾的数字,然后,还要考虑结束情况,比如一个是3位数,一个是2位数。你要相加的话,就要把2位数的第三位置0.

public String addStrings(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 != 0;
             i--, j--) {
            int x = i < 0 ? 0 : num1.charAt(i) - '0';
            int y = j < 0 ? 0 : num2.charAt(j) - '0';
            int sum = (x + y + carry) % 10;
            builder.append(sum);
            carry = (x + y + carry) / 10;
        }
        return builder.reverse().toString();
    }