题目表述:以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。
(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)
示例:
解题思路:将短的字符串的前端以0补齐至与长字符串长度相同。后从最后一位起向前逐步相加,注意判断是否需要向前进位。
string solve(string s, string t) {
// write code here
int length = s.length()>t.length()?s.length()+1:t.length()+1;
string temp_zaros(length-s.length(),'0');
s = temp_zaros+s;
string temp_zarot(length-t.length(),'0');
t = temp_zarot+t;
string ans;
char temp_num[2];
temp_num[1] = '\0';
//从最后一位向前加
for(int i=length;i>1;i--)
{
//判断是否需要进位
temp_num[0] = s[i-1]+t[i-1]-'0';
if(temp_num[0]-'0'>=10)
{
temp_num[0] = temp_num[0] -10;
ans.insert(0,temp_num);
s[i-2] = s[i-2] + 1;
}
else
{
ans.insert(0, temp_num);
}
}
if((s[1]+t[1]-'0'-'0')>=10)
{
temp_num[0] = '1';
ans.insert(0, temp_num);
}
return ans;
}