題目來源
將兩個數字字符串相加,返回結果字符串,我原來想著轉換為整型,然后進行加法,然后再轉為字符串。代碼如下:
class Solution {
public:
string addStrings(string num1, string num2) {
int n1 = num1.size(), n2 = num2.size();
long long v1 = 0, v2 = 0;
for (int i=0; i<n1; i++) {
v1 = v1 * 10 + (num1[i] - '0');
}
for (int i=0; i<n2; i++) {
v2 = v2 * 10 + (num2[i] - '0');
}
return to_string(v1 + v2);
}
};
但是發現字符串長度可以達到5000+位,直接gg,轉換為整型的方法顯然行不通了。然后得一個一個加,代碼如下:
class Solution {
public:
string addStrings(string num1, string num2) {
int n1 = num1.size(), n2 = num2.size();
int n = max(n1, n2);
string res = "";
bool carry = false;
for (int i=1; i<=n; i++) {
int tmp1 = n1 >= i ? num1[n1-i] - '0' : 0;
int tmp2 = n2 >= i ? num2[n2-i] - '0' : 0;
int tmp = tmp1 + tmp2;
if (carry)
tmp++;
res = to_string(tmp % 10) + res;
carry = tmp / 10;
}
if (carry)
res = '1' + res;
return res;
}
};