415. Add Strings

题目描述和难度

  • 题目描述:

给定两个字符串形式的非负整数 num1num2 ,计算它们的和。

注意:

  1. num1num2 的长度都小于 5100.
  2. num1num2 都只包含数字 0-9.
  3. num1num2 都不包含任何前导零。
  4. 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

思路分析

求解关键:这道题算是一个经典问题了,和 LeetCode 第 2 题是一类问题。

参考解答

参考解答1

public class Solution {

    public String addStrings(String num1, String num2) {
        StringBuilder stringBuilder = new StringBuilder();
        int len1 = num1.length();
        int len2 = num2.length();

        // 考虑特殊情况,直接返回结果
        if (len1 == 0) {
            return num2;
        }
        if (len2 == 0) {
            return num1;
        }

        int index1 = len1 - 1;
        int index2 = len2 - 1;
        int sum = 0;
        while (index1 >= 0 || index2 >= 0) {
            if (index1 >= 0) {
                int a = num1.charAt(index1) - '0';
                sum += a;
                index1--;
            }

            if (index2 >= 0) {
                int b = num2.charAt(index2) - '0';
                sum += b;
                index2--;
            }

            stringBuilder.append(sum % 10);
            // 表示是否进位
            sum /= 10;
        }

        // 最后这一步不要忘记了
        if (sum == 1) {
            stringBuilder.append(1);
        }
        return stringBuilder.reverse().toString();
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        String num1 = "1234";
        String num2 = "5678";
        String addStrings = solution.addStrings(num1, num2);
        System.out.println(addStrings);

        System.out.println(Integer.valueOf(num1) + Integer.valueOf(num2));
    }
}

本篇文章的地址为 https://liweiwei1419.github.io/leetcode-solution/leetcode-0415-add-strings ,如果我的题解有错误,或者您有更好的解法,欢迎您告诉我 liweiwei1419@gmail.com