题解 | #NC1 大数加法#
大数加法
http://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(string s, string t) { // write code here string res = string(); int carry=0; //进位 int slen = s.length(); int tlen = t.length(); int i = slen-1; int j = tlen-1; while(i>=0&&j>=0){ char sc = s[i]; char tc = t[j]; int si = sc - '0'; int ti = tc - '0'; int value = si+ti+carry; if(value>=10){ value = value % 10; carry = 1; } else{ carry = 0; } char cv = value +'0'; res.insert(0,string(1,cv)); i--; j--; } while(i>=0){ char sc = s[i]; int si = sc - '0'; int value = si+carry; if(value>=10){ value = value % 10; carry = 1; } else{ carry = 0; } char cv = value +'0'; res.insert(0,string(1,cv)); i--; } while(j>=0){ char tc = t[j]; int ti = tc - '0'; int value = ti+carry; if(value>=10){ value = value % 10; carry = 1; } else{ carry = 0; } char cv = value +'0'; res.insert(0,string(1,cv)); j--; } if(carry==1){ char cv = '1'; res.insert(0,string(1,cv)); } return res; } };