题解 | #大数加法#
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
string solve(string s, string t) {//参考大佬的python代码用c++实现
// write code here
int i = s.size()-1, j = t.size()-1, carry = 0;
int maxLen = max(i, j)+1; //这里需要用最长的字符串作为遍历长度,因为需要把所有数字加进去,考虑可能越界,所以越界就默认加零
string rst = "";
for(int k = 0; k < maxLen; ++k)
{
int m = i >= 0 ? (s[i]-'0') : 0;
int n = j >= 0 ? (t[j]-'0') : 0;
int total = m + n + carry;
carry = total / 10;
rst = (char)(total%10 + '0') + rst; //将加法结果转换成字符
i -= 1;
j -= 1;
}
rst = carry ? ("1"+rst) : rst; //最后判断是否有进位,即carry是否大于一
return rst;
}