题解 | #大数加法#

大数加法

http://www.nowcoder.com/questionTerminal/11ae12e8c6fe48f883cad618c2e81475

//算法思想:从后向前遍历字符串,同时对应字符相加,同时将每次进位保存在af中,将新生成的字符放入u的后面
//关键点:字符->整数:-'0'或者-48
//整数->字符:+'0'或者+48
string solve(string s,string t)
{
int af=0; //进位位
string u; //用来保存新生成的字符串
int a=s.length(),b=t.length();
while (a-->0 && b-->0)
{
int x=s.at(a)-'0';
int y=t.at(b)-'0';
int z=(x+y+af)%10;
af =(x+y+af)/10;
z=z+'0';
u.push_back(z);
}
while (a-->0)
{
int x=s.at(a)-'0';
int z=(x+af)%10;
af=(x+af)/10;
z=z+'0';
u.push_back(z);
}
while (b-->0)
{
int y=t.at(b)-'0';
int z=(y+af)%10;
af=(af+y)/10;
z=z+'0';
u.push_back(z);
}
if (af>0)
u.push_back(af+'0');
reverse(u.begin(),u.end()); //颠倒字符串方法,在算法头文件中
return u;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务