415. 字元串相加
難度簡單302
給定兩個字元串形式的非負整數
和
num1
num2
,計算它們的和。
提示:
和
num1
的長度都小于 5100
num2
和
num1
都隻包含數字
num2
0-9
和
num1
都不包含任何前導零
num2
- 你不能使用任何內建 BigInteger 庫, 也不能直接将輸入的字元串轉換為整數形式
這個和兩數相加是一樣道理的,在連結清單裡面也出現過相同的題目。
模拟列豎式計算的過程,主要是一開始以n1 = 0, n2 = 0這樣,然後對非空位數字将其指派給相應的n1, n2,最後不要忘記對進位數進行處理。
我這裡直接利用string類型裡面加的功能,但注意是:res = num + res,不能是res += num,後面這樣得到的結果整好的反着的。
另外,在對char 型的num[i] 計算,不能利用轉int型,是以需要借助ASCII碼,将num[i]-‘0’ 這樣就可以得到int型的num[i]的數值啦
class Solution {
public:
string addStrings(string num1, string num2) {
int i = num1.length()-1, j = num2.length()-1;
int carry = 0;
string res = "";
while(i >= 0 || j >= 0){
int n1 = 0, n2 = 0;
if(i >= 0){
n1 = num1[i]-'0';
}
if(j >= 0){
n2 = num2[j]-'0';
}
int sum = n1 + n2 + carry;
res = to_string(sum % 10) + res;
carry = sum / 10;
i--;
j--;
}
if(carry > 0){
res = to_string(carry) + res;
}
return res;
}
};