题解 | #大数加法#
大数加法
https://www.nowcoder.com/practice/11ae12e8c6fe48f883cad618c2e81475
#include <algorithm> #include <string> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ string solve(string s, string t) { // write code here //判断s,t是否都是十进制 for(char i : s){ if(!isdigit(i)){ return ""; } } for(char i : t){ if(!isdigit(i)){ return ""; } } // 不能直接stoi转,因为会超出长度限制 s = "0"+s; t = "0"+t; reverse(s.begin(),s.end()); reverse(t.begin(),t.end()); // cout<<s<<","<<t<<endl; int Asize = s.size(); int Bsize = t.size(); int re = 0; int len = max(s.size(), t.size()); if(len == s.size()){ for(int i =0;i<Asize-Bsize;i++){ t += "0"; } } else{ for(int i =0;i<Bsize-Asize;i++){ s += "0"; } } string resStr = ""; for(int i = 0; i<len; i++){ //cout<<s[i]<<","<<t[i]<<endl; int sNum = s[i]-'0'; int tNum = t[i]-'0'; int sum = sNum+tNum+re; if(sum>9){ re = sum/10; sum = sum%10; }else{ re = 0; } resStr += to_string(sum); //cout<<"resStr,"<<resStr<<endl; } reverse(resStr.begin(), resStr.end()); //cout<<resStr<<endl; if(resStr[0] == '0'){ resStr.erase(resStr.begin()); } return resStr; } };