415. 字符串相加 + 加法模拟

415. 字符串相加

LeetCode_415

题目详情

方法一:使用暴力法

class Solution {
    public String addStrings(String num1, String num2) {
        int len1 = num1.length();
        int len2 = num2.length();
        int inc = 0;
        String result = "";
        int i=len1-1,j = len2-1;
        for(; i>=0 && j>=0; i--,j--){
            int a = Integer.parseInt(""+num1.charAt(i));
            int b = Integer.parseInt(""+num2.charAt(j));
            int total = inc + a + b;
            inc = total / 10;
            int now = total % 10;
            result = String.valueOf(now) + result;
        }
        if(i >= 0){//num1还有剩余
            for(; i>=0; i--){
                int a = Integer.parseInt(""+num1.charAt(i));
                int total = inc + a;
                 inc = total / 10;
                int now = total % 10;
                result = String.valueOf(now) + result;
            }
        }else if(j >= 0){
            for(; j>=0; j--){
                int b = Integer.parseInt(""+num2.charAt(j));
                int total = inc + b;
                 inc = total / 10;
                int now = total % 10;
                result = String.valueOf(now) + result;
            }
        }
        if(inc != 0)
            result = String.valueOf(inc) + result;
        return result;
    }
}

方法二:使用StringBuilder

class Solution {
    public String addStrings(String num1, String num2) {
        int len1 = num1.length() - 1;
        int len2 = num2.length() - 1;
        int inc = 0;
        StringBuilder sb = new StringBuilder();
        while(len1 >= 0 || len2 >= 0){
            int a = len1 >=0 ? num1.charAt(len1) - '0' : 0;
            int b = len2 >=0 ? num2.charAt(len2) - '0' : 0;
            int total = inc + a + b;
            inc = total / 10;
            sb.append(total % 10);
            len1--;
            len2--;
        }
        if(inc == 1)
            sb.append("1");
        sb.reverse();
        return sb.toString();
    }
}
posted @ 2021-03-06 21:44  Garrett_Wale  阅读(93)  评论(0编辑  收藏  举报