给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
string addStrings(string num1, string num2) {
string res="";
string str1="",str2="";
if(num1.size()>num2.size()){
str1 = num1;
res = num1;
str2 = num2;
}else{
str1 = num2;
res = num2;
str2 = num1;
}
int i=str1.size()-1,j=str2.size()-1;
int flag =0;
int s=0;
while(i>=0&&j>=0){
if(s+str1[i]-'0'+str2[j]-'0'>=10){
res[i]=s+str1[i]-'0'+str2[j]-'0'-10+'0';
s=1;
}else{
res[i]=s+str1[i]-'0'+str2[j]-'0'+'0';
s=0;
}
--i;
--j;
}
if(s&&(i==-1&&j==-1)){
return '1'+res;
}
//后面是不等长的部分
if(s){
while(i>=0){
if(res[i]-'0'+s>=10){
res[i]=res[i]-'0'+s-10+'0';
s=1;
}else{
res[i]=res[i]-'0'+s+'0';
s=0;
}
--i;
}
}
if(s){
res='1'+res;
}
return res;
}
};
作者:he-zi-11
链接:https://leetcode-cn.com/problems/add-strings/solution/zui-ben-de-fang-fa-by-he-zi-11/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
方法二:
先补0对齐的方法
class Solution {
public:
string addStrings(string num1, string num2){
int cha = num1.size()-num2.size();
int len = abs(cha);
while(len--){
num2.size()>num1.size()?num1="0"+num1:num2="0"+num2;
}
int i=num1.size()-1;
int s = 0;
while(i>=0){
int n = num1[i]-'0'+num2[i]-'0'+s;
if(n>=10){
num1[i] = n-10+'0';
s=1;
}else{
num1[i] = n+'0';
s=0;
}
--i;
}
return s==1?"1"+num1:num1;
}
};
作者:he-zi-11
链接:https://leetcode-cn.com/problems/add-strings/solution/xian-bu-0dui-qi-de-zuo-fa-by-he-zi-11/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。