字符串 - 使用字符串模拟两数相加

415. 字符串相加

题目描述:

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式

算法思想:

解法一:双指针解法
分别定义两个指针,指向字符串str1和字符串str2的尾部,然后,相同位上的数字进行算术加法,同时记录每次加法运算的进位。
传送门

代码实现:

解法一:双指针解法

class Solution {
    public String addStrings(String num1, String num2) {
        int i = num1.length() - 1;
        int j = num2.length() - 1;
        // carry表示进位
        int carry = 0;
        // sum表示每位相加的和
        int sum;
        StringBuilder builder = new StringBuilder();

        while (i >= 0 && j >= 0) {
            sum = (num1.charAt(i)-'0') + (num2.charAt(j) - '0') + carry;
            builder.append(sum % 10);
            carry = sum / 10;
            i --;
            j --;
        }

        while (i >= 0) {
            sum = (num1.charAt(i) - '0') + carry;
            builder.append(sum % 10);
            carry = sum / 10;
            i --;
        }

        while (j >= 0) {
            sum = (num2.charAt(j) - '0') + carry;
            builder.append(sum % 10);
            carry = sum / 10;
            j --;
        }

        if (carry > 0) {
            builder.append(carry);
        }

        return builder.reverse().toString();
    }
}

你可能感兴趣的:(字符串 - 使用字符串模拟两数相加)