1. 程式人生 > 其它 >字串相加

字串相加

字串相加

一、題目描述

給定兩個字串形式的非負數num1he num2,計算它們的和並以字串的形式返回。不能使用任何的內建函式。
示例1:

輸入:num1 = "11", num2 = "123"
輸出:"134"

示例2:

輸入:num1 = "456", num2 = "77"
輸出:"533"

示例3

輸入:num1 = "0", num2 = "0"
輸出:"0"

二、解題思路

可以考慮使用使用豎式加法,類似於我們在紙上計算的加法那樣。為了解決兩個字串位數不同的情況,可以給簡短位數補零來處理對位數不齊的情況。

三、解題方法

方法1
使用兩個指標分別指向兩個字串的尾,在用一個變數add來記錄加時的進位。迴圈遍歷兩個字串。利用ASCII編碼的特性,來計算出字元,並存入StringBuffer中,最後將流反轉再轉為字串即可。
程式碼實現:

class Solution {
    public String addStrings(String num1, String num2) {

        int i = num1.length()-1;
        int j = num2.length()-1;
        int add = 0;

        StringBuffer res = new StringBuffer();
        while(i >= 0 || j >= 0 || add!=0){

            int x = i >= 0 ? num1.charAt(i) - '0' : 0;
            int y = j >= 0 ? num2.charAt(j) - '0' : 0;

            int result = x + y + add;
            res.append(result%10);
            add = result/10;

            i--;
            j--;
        }

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