[各种面试题] 非负大整数加法

给定两个字符串表示的非负整数ab,计算它们的和a+b,结果也用字符串表示。

最近才学到写这种简洁的while,还比较喜欢。

//返回a+b的结果
string add(const string& a, const string& b) {
	if ( a.empty() || b.empty() )
		return a.empty()?b:a;
	string ret;
	int carry=0;
	int p1=a.size()-1,p2=b.size()-1;
	while(p1>=0||p2>=0||carry)
	{
		int sum=carry;
		if ( p1>=0)
			sum+=a[p1--]-'0';
		if ( p2>=0 )
			sum+=b[p2--]-'0';
		ret.push_back(sum%10+'0');
		carry=sum/10;
	}
	reverse(ret.begin(),ret.end());
	return ret;
}


你可能感兴趣的:(各种面试题)