一、题目描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
二、思路分析
这是一道大数的求解。也显然是一道字符串的求值方法。这道题看了题解后,采用了一种补0的思路。因为不知道两个字符串的长度,因此如果直接计算的话,很容易会出现一个字符串加完了,另一个还没有加完。但是如果给加完的字符串补0,不让他们跳出循环,那就可以愉快的进行加减了。那么什么时候可以跳出循环呢?当然是两个字符串全部减到小于0,并且作为记录进位的数字也为0,则可以跳出循环了。
三、代码
class Solution {
public:
string addStrings(string num1, string num2) {
string s="";
int i=num1.length()-1;
int j=num2.length()-1;
int add=0;
while(i>=0||j>=0||add>0){
int x=i>=0?num1[i]-'0':0;
int y=j>=0?num2[j]-'0':0;
int result = x+y+add;
s.push_back(result % 10 + '0');
add=result / 10;
i--;
j--;
}
reverse(s.begin(),s.end());
return s;
}
};
四、知识点分析
字符串真的有很多知识点,这道题里面有几个知识点:
1.字符减0,则将字符转为整数。
2.整数+0,将整数转为字符。
3.length()函数。
4.s.push_back(char c),把字符C加入s的字符串的末尾。
5.reverse(s.begin(),s.end()),把,字符串s从头到尾翻转过来。
5.字符串可以当成数组来用。
本文介绍了一种解决两个字符串形式的大数相加问题的方法,通过补0的方式确保两个数位对齐,逐位相加并处理进位,最终得到正确的结果。

1175

被折叠的 条评论
为什么被折叠?



