一、題目介紹
給定兩個字符串形式的非負整數 num1 和num2 ,計算它們的和。
注意:
num1 和num2 的長度都小於 5100.
num1 和num2 都只包含數字 0-9.
num1 和num2 都不包含任何前導零。
你不能使用任何內建 BigInteger 庫, 也不能直接將輸入的字符串轉換爲整數形式。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/add-strings
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
二、解題思路
本題考查大數加法,即按字節相加,相加的過程中注意進位操作。模擬豎式加法的過程。
三、解題代碼
class Solution {
public:
string addStrings(string num1, string num2) {
int c = 0, r, p, q;
string res;
int l1 = num1.length()-1;
int l2 = num2.length()-1;
while(l1 >= 0 || l2 >= 0)
{
p = l1 < 0 ? 0 : num1[l1--] - '0';
q = l2 < 0 ? 0 : num2[l2--] - '0';
r = (p+q+c)%10; //當前位剩餘值
c = (p+q+c)/10; //進位值
res = (char)(r + '0') + res;
}
return c == 0 ? res : (char)(c + '0') + res;
}
};
四、解題結果