题目:两个字符串相加(非负数)。
分析:从两个字符串的末尾位对应为开始相加,每次都是对应为加上上一次的进位(第一次是0,之后每满十,进位位置1)需要注意的是,当短串完了不能之间将长串直接拷下来,原因是可能有极端的情况一直需要进位(如9999+1),另外,最后还要判断是否有进位。
string add_string(string num1, string num2)
{
int index1 = num1.size() - 1;//串1的最后一个字符位置
int index2 = num2.size() - 1;//串2的最后一个字符位置
int next = 0;//进位
string retstr;//保持最终结果串
//只要有一个不结束,就不结束(最长串完了才算完了)
while (index1 >= 0 || index2 >= 0)
{
int value1 = 0;
int value2 = 0;
//从尾->头取串1数字
if (index1 >= 0)
{
value1 = num1[index1] - '0';//取到最后一个字符对应的数字
--index1;//每取到一个,往前挪一下
}
//从尾->头取串2数字
if (index2 >= 0)
{
value2 = num2[index2] - '0';
index2--;
}
//当前值=当前对应位+上一次进位
int addret = value1 + value2 + next;
if (addret > 9)//判断当前值需不需要给下一次进位
{
addret -= 10;
next &