字串相加
阿新 • • 發佈:2022-11-29
字串相加
一、題目描述
給定兩個字串形式的非負數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(); } }