C++开头
️️️️Take your time ! ️️️️
个人主页:大魔王
所属专栏:魔王的修炼之路–C++
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞和关注,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。
这是个简单题,主要是为了下一个字符串相乘博客能用上。
要注意的点就一个:最后当有一个结束时,检查一下flag是否为1,也就是是否还进了1没处理。
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = “11”, num2 = “123”
输出:“134”
示例 2:
输入:num1 = “456”, num2 = “77”
输出:“533”
示例 3:
输入:num1 = “0”, num2 = “0”
输出:“0”
class Solution {
public:
string addStrings(string num1, string num2) {
string s;
int n1 = 0,n2 = 0;
int flag = 0;
int sum = 0;
string::iterator cur1 = num1.end() - 1;
string::iterator cur2 = num2.end() - 1;
while(cur1 >= num1.begin() || cur2 >= num2.begin())
{
n1 = cur1 >=num1.begin() ? *cur1 - '0' : 0;
n2 = cur2 >=num2.begin() ? *cur2 - '0' : 0;//等到越界的时候也没事,因为三目操作符会选择性执行,只会去比那块的地址,不会访问进去。
sum = n1 + n2 + flag;
flag = 0;
if(sum > 9)
{
flag = 1;
sum -= 10;
}
s += sum + '0';
cur1--;
cur2--;
}
if(flag)
s += 1 + '0';
reverse(s.begin(), s.end());
cout << s;
return s;
}
};
专栏推荐
魔王的修炼之路–C语言
魔王的修炼之路–数据结构初阶
魔王的修炼之路–C++
魔王的修炼之路–Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。