1.題目
給定兩個字符串形式的非負整數(shù) num1 和num2,計算它們的和并同樣以字符串形式返回。
你不能使用任何內(nèi)建的用于處理大整數(shù)的庫(比如 BigInteger), 也不能直接將輸入的字符串轉換為整數(shù)形式。
示例 1:
輸入:num1 = “11”, num2 = “123”
輸出:“134”
示例 2:
輸入:num1 = “456”, num2 = “77”
輸出:“533”
示例 3:
輸入:num1 = “0”, num2 = “0”
輸出:“0”
提示:
1 <= num1.length, num2.length <= 104
num1 和 num2 都只包含數(shù)字 0 - 9
num1 和 num2 都不包含任何前導零
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/add-strings
2.思路
(1)模擬
定義兩個指針 i
和 j
分別指向 num1 和 num2 的末尾,即最低位,同時定義一個變量 carry
維護當前是否有進位,然后從末尾到開頭逐位相加即可。你可能會想兩個數(shù)字位數(shù)不同怎么處理,這里我們統(tǒng)一在指針當前下標處于負數(shù)的時候返回 0,等價于對位數(shù)較短的數(shù)字進行了補零操作,這樣就可以除去兩個數(shù)字位數(shù)不同情況的處理,具體可以看下面的代碼。文章來源:http://www.zghlxwxcb.cn/news/detail-429123.html
相關題目:
LeetCode_字符串_中等_43.字符串相乘
LeetCode_字符串_簡單_67.二進制求和文章來源地址http://www.zghlxwxcb.cn/news/detail-429123.html
3.代碼實現(xiàn)(Java)
//思路1————模擬
class Solution {
public String addStrings(String num1, String num2) {
int i = num1.length() - 1;
int j = num2.length() - 1;
//進位
int carry = 0;
StringBuilder res = new StringBuilder();
while (i >= 0 || j >= 0 || carry != 0) {
int x = (i >= 0) ? num1.charAt(i) - '0' : 0;
int y = (j >= 0) ? num2.charAt(j) - '0' : 0;
int val = x + y + carry;
res.append(val % 10);
carry = val / 10;
i--;
j--;
}
//計算完以后的答案需要翻轉過來
return res.reverse().toString();
}
}
到了這里,關于LeetCode_字符串_簡單_415.字符串相加的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!