class Solution {
public:
string addStrings(string num1, string num2) {
int len1=num1.length()-1,len2=num2.length()-1;
string ret="";
//ret.resize(num2.length()>num1.length()?num1.length():num2.length());
int add=0;//进位
while(len1>=0||len2>=0||add!=0)
{
int x= len1>=0 ? num1[len1]-'0' : 0;
int y= len2>=0 ? num2[len2]-'0' : 0;
len1--;len2--;
int result=x+y+add;
//cout<<result<<endl;
ret.push_back(result%10+'0');
add=result/10;
}
reverse(ret.begin(),ret.end());//要反转,因为相加过程是把低位相加存在低位,而实际用字符串存数字,在低位(下标处)存的是数字的高位
return ret;
}
};
字符串相加,有很多地方要注意,两串长不一致,进位数据的保存,和两数相加后的进位处理,以及循环控制,和边界判断