字符串简单1 种解法

#415字符串相加

不把完整输入转换为整数,计算两个非负整数字符串之和。

#数学#字符串#模拟

解题主线

01

从最低位向前同步扫描,当前位由两个数字与 carry 相加得到。

解法 1竖式加法

双指针从字符串末尾前移,维护十进制进位。

时间复杂度

O(max(m, n))

空间复杂度

O(max(m, n)),用于返回字符串

415. 字符串相加 · 竖式加法
final class Solution {
    public String addStrings(String num1, String num2) {
        StringBuilder reversed = new StringBuilder(Math.max(num1.length(), num2.length()) + 1);
        int first = num1.length() - 1;
        int second = num2.length() - 1;
        int carry = 0;
        while (first >= 0 || second >= 0 || carry != 0) {
            int left = first >= 0 ? num1.charAt(first--) - '0' : 0;
            int right = second >= 0 ? num2.charAt(second--) - '0' : 0;
            int sum = left + right + carry;
            reversed.append(sum % 10);
            carry = sum / 10;
        }
        return reversed.reverse().toString();
    }
}

双指针从字符串末尾前移,维护十进制进位。

边界与易错点

  • 循环结束后仍可能有进位。
  • 结果按低位到高位追加,返回前必须反转。
整理来源

由旧仓库源码复核、去重并整理;展示代码已按 Java 21 语义修正明显问题。

easy/Q415_twostringsum.java