415.字符串相加
目录
- 题目
- 过程
- 解法
- 收获
题目
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
过程
思路:用pos保存进位,用temp来存储取余后的进位值
解法
class Solution {
public:
string addStrings(string num1, string num2) {
string ans="";
int Fir_len = num1.size()-1,Sec_len = num2.size()-1,carry=0;
while(Fir_len>=0 || Sec_len>=0){
int n = Fir_len>=0 ? num1[Fir_len]-'0' : 0;
int m = Sec_len>=0 ? num2[Sec_len]-'0' : 0;
int tmp = n+m+carry;
carry = tmp/10;
ans+=to_string(tmp%10);
--Fir_len;
--Sec_len;
}
if(carry==1){
ans+="1";
}
reverse(ans.begin(),ans.end());
return ans;
}
};
收获
字符串相加只要+号就可以了,然后倒序和正序其实是一样的问题,只需要翻转
补齐的这个操作很牛逼,精简了代码