【C++习题】6.字符串相加
题目:
链接🔗:字符串相加
题目:
代码:
class Solution {
public:
// 将两个字符串形式的数字相加
string addStrings(string num1, string num2) {
string str;// 用于存储最终的相加结果
int end1=num1.size()-1,end2=num2.size()-1;// 两个字符串的末尾索引
int next=0;// 用于存储进位值
// 循环处理两个字符串的每一位数字
while(end1>=0 || end2>=0){
int x1=end1>=0?num1[end1]-'0':0;// 获取num1当前位的数字,如果已经遍历完则为0
int x2=end2>=0?num2[end2]-'0':0;// 获取num2当前位的数字,如果已经遍历完则为0
--end1;// 移动到num1的前一位
--end2;// 移动到num2的前一位
int ret = x1+x2+next;// 计算当前位的和加上进位
next=ret/10;// 计算新的进位值
ret=ret%10;// 计算当前位的结果
// 将当前位的结果插入到结果字符串的开头
str.insert(str.begin(), '0'+ret);
//str.insert(0,1,'0'+ret);// 这行代码与上面一行功能相同,但注释掉的这行代码是另一种插入方式
}
// 如果最后还有进位,需要将进位值添加到结果字符串的开头
if(next==1){
str.insert(str.begin(), '1');
}
return str;// 返回最终的相加结果
}
};