415-字符串相加

字符串相加

题目

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

注意:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

  • 要求不实用内置库,且长度很长,因此不能转换为int类型,肯定会超.因此选择创建新的字符串然后返回

代码

class Solution {
    public String addStrings(String num1, String num2) {
        //给定非负整数,要求不使用内置库,可以分别从队尾遍历相加,同时字符串长度很长,直接相加算sum也不可行
        int min = Math.min(num2.length(),num1.length());
        StringBuilder sb = new StringBuilder();
        boolean carryFlag = false;
        for(int i =0;i= 10){
                carryFlag = true;
                sb.append(sum%10);
            }else{
                carryFlag = false;
                sb.append(sum);
            }
        }
        String remain = num1.length()-min>0?num1:num2;
        for(int i = remain.length()-1-min;i >=0;i--){
            int num = remain.charAt(i)-'0';
            if(carryFlag){
                num++;
            }
            if(num == 10){
                carryFlag = true;
                sb.append(0);
            }else{
                carryFlag = false;
                sb.append(num);
            }
        }
        if (carryFlag){
            sb.append(1);
        }
        return sb.reverse().toString();
    }
}

你可能感兴趣的:(415-字符串相加)