编辑代码

class Main {
	public static String addStrings(String num1, String num2) {
        StringBuilder result = new StringBuilder();
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        int carry = 0;

        while (i >= 0 || j >= 0 || carry > 0) {
            // 获取当前位的数字,如果已超出索引范围则视为0
            int digit1 = (i >= 0) ? num1.charAt(i) - '0' : 0;
            int digit2 = (j >= 0) ? num2.charAt(j) - '0' : 0;

            // 计算当前位的和
            int sum = digit1 + digit2 + carry;
            carry = sum / 10;  // 计算进位
            result.append(sum % 10);  // 添加当前位的数字

            // 移动指针
            i--;
            j--;
        }

        // 反转结果字符串
        return result.reverse().toString();
    }

    public static void main(String[] args) {
        System.out.println(addStrings("123", "456"));  // 输出: "579"
        System.out.println(addStrings("999", "1"));    // 输出: "1000"
        System.out.println(addStrings("0", "0"));      // 输出: "0"
        System.out.println(addStrings("999999999", "1")); // 输出: "1000000000"
    }
}