codeTop100题(26)415. 字符串相加

89 阅读1分钟

1. 题目

415. 字符串相加

2. 分析

当我们需要计算两个字符串数组的和的时候,我们可以通过两个指针,分别把字符串每一个位置的数字求和,注意进位,当其中一个为空的时候,取另一个字符串的指针对应位置的数字+进位就好

image.png

3. 代码

public static String addStrings(String num1, String num2) {
    num1 = new StringBuffer(num1).reverse().toString();
    num2 = new StringBuffer(num2).reverse().toString();
    int a = 0, b = 0;
    StringBuffer buffer = new StringBuffer();
    int jinwei = 0;
    while (a < num1.length() || b < num2.length()) {
        if (a >= num1.length()) {
            //这里考虑进位
            int res = (int) num2.charAt(b++) - 48 + jinwei;
            buffer.append(res % 10);
            jinwei = res / 10;
            continue;
        }
        if (b >= num2.length()) {
            //这里考虑进位
            int res = (int) num1.charAt(a++) - 48 + jinwei;
            buffer.append(res % 10);
            jinwei = res / 10;
            continue;
        }
        int res = ((int) num1.charAt(a) - 48) + ((int) num2.charAt(b) - 48) + jinwei;
        buffer.append(res % 10);
        jinwei = res / 10;
        a++;
        b++;
    }
    //这里考虑进位
    if (jinwei > 0) {
        buffer.append(jinwei);
    }
    return buffer.reverse().toString();
}