题解 | #大数加法#
大数加法
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;
}
};

查看26道真题和解析