字符串的各位对齐,不足的位以0代替,从末位开始相加,如果大于等于10则产生进位,保存进了多少位,下次加的时候也需要把进位标志加上
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(string s, string t) { // write code here //字符串从末尾相加,大于10就进位,用变量保存进位的情况 reverse(s.begin(),s.end()); reverse(t.begin(),t.end()); int index = max(s.length(),t.length()); string ret = ""; int flag = 0; //遍历字符串进行相加; for(int i=0; i<index; i++) { //10 uint8_t num1 = 0; if(s.length() > i) { num1 = s.at(i) - '0'; } //99 uint8_t num2 = 0; if(t.length() > i) { num2 = t.at(i) - '0'; } uint8_t total = num1 + num2 + flag; //本次相加的总和,如果大于10则产生进位,否则需要重置进位标志为0 if(total >= 10) { flag = total / 10; total = total % 10; } else { flag = 0; } ret.push_back(total+'0'); } //加完以后判断最终是否有进位 if(flag > 0) ret.push_back(flag+'0'); reverse(ret.begin(), ret.end()); return ret; } };