AC代码
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算两个数之和
* @param s string字符串 表示第一个整数
* @param t string字符串 表示第二个整数
* @return string字符串
*/
string solve(string s, string t) {
// write code here
reverse(s.begin(), s.end()); //核心,反转1
reverse(t.begin(), t.end());
int lenA=s.size();
int lenB=t.size();
int carry=0;
int curPos=0;
vector<int> temp( max(lenA,lenB)+1 ); //注意点1:防止进位,多1个
int a=0,b=0;
while( a<lenA && b<lenB )
{
int one=s[a]-'0';
int two=t[b]-'0';
temp[curPos]=(one+two+carry)%10; //注意点2:temp和carry顺序
carry=(one+two+carry)/10;
++a;
++b;
++curPos;
}
while( a<lenA )
{
int one=s[a]-'0';
temp[curPos]=(one+carry)%10;
carry=(one+carry)/10;
++a;
++curPos;
}
while( b<lenB )
{
int two=t[b]-'0';
temp[curPos]=(two+carry)%10;
carry=(two+carry)/10;
++b;
++curPos;
}
if( 0!=carry )
{
temp[curPos++]=carry;
}
string ret;
for(int i=curPos-1; i>=0; --i)//核心,反转2
{
char c=temp[i]+'0';
ret+=c;
}
return ret;
}
};