题解 | #大数加法#(填0将字符串变换到同一长度)
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
class Solution { public: string solve(string s, string t) { int l = s.length(); int r = t.length(); if(!l) return t; if(!r) return s; int carry = 0, tmp = 0; if(l < r){ // 将短的字符串补到同一个长度 for(int n = r-l; n > 0; n--){ s = '0' + s; } }else if(l > r){ for(int n = l - r; n > 0; n--){ t = '0' + t; } } l = s.size(); for(int i = l-1; i >= 0; i--){ // 从后往前做加法 tmp = s[i] - '0' + t[i] - '0' +carry; if(tmp >= 10){ // 需要进位 carry = 1; tmp -= 10; }else{ // 不需要进位 carry = 0; } s[i] = tmp + '0'; } if(carry) s = '1' + s; // 最后一位相加产生了进位 return s; } };