题目:
示例:
分析:
题面很简单,就是要将两个字符串看作是数字然后相加,将最后结果转为字符串返回即可.
看到这题我的第一反应是直接转成数字再相加再转成字符串,像是这样:
class Solution {
public:
string addStrings(string num1, string num2) {
return to_string(stoi(num1)+stoi(num2));
}
};
但这样就不符合题目要求了(这不是主要原因) ,并且遇到大数就无法转成整型也无法计算了.
所以需要像是我们列竖式计算这样来算出结果.
首先将两个字符串翻转过来,这样就尾部对齐了(个位对个位,十位对十位).
然后再单独把每位的字符转成数字再相加,然后转成新的字符串即可.需要注意的是进位,进位要单独取一个变量来存着.
相加完毕后还需要再翻转回来.
代码+运行结果:
class Solution {
public:
string addStrings(string num1, string num2) {
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
string res="";
int jinwei=0;
int index=0;
while(index<num1.size() || index<num2.size() || jinwei!=0){
int cur=0;
cur+=((index<num1.size()?int(num1[index]-'0'):0))+((index<num2.size()?int(num2[index]-'0'):0))+jinwei;
res+=to_string(cur%10);
jinwei=cur/10;
index++;
}
reverse(res.begin(),res.end());
return res;
}
};