给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
class Solution {
public:
string addStrings(string num1, string num2) {
if(num1.empty())
{
return num2;
}
if(num2.empty())
{
return num1;
}
int l1=num1.size();
int l2=num2.size();
if(l1>l2)
{
int l3=l1-l2;
string s3;
for(int i=0;i<l3;i++){
s3+='0';
}
for(int i=0;i<l2;i++)
{
s3+=num2[i];
}
num2=s3;
}
else if(l1<l2)
{
int l3=l2-l1;
string s3;
for(int i=0;i<l3;i++){
s3+='0';
}
for(int i=0;i<l1;i++)
{
s3+=num1[i];
}
num1=s3;
}
int l=l1>l2?l1:l2;
string s;
s.clear();
int flag=0;
for(int i=l-1;i>=0; i--)
{
int sum=(num1[i]-'0')+(num2[i]-'0');
if(flag==1)
sum+=1;
s+=(sum%10)+'0';
if(sum>9)
flag=1;
else
flag=0;
}
if(flag==1)
s+='1';
int ls=s.size();
string s2;
for(int i=0;i<ls;i++)
{
s2+=s[ls-i-1];
}
return s2;
}
};
版权声明:本文为weixin_44184902原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。