当我尝试添加 2 个大字符串时,我不知道出了什么问题
I can't figure out what's going wrong when I try to add 2 big strings
我在 C++ 中使用大整数库尝试了这个问题,它工作得很好,当我尝试一次从两个字符串中使用一个整数来做到这一点时
我收到 运行 时间错误,我确实尝试通过在代码中包含 cout 语句来调试它,但一切似乎都很好。
string addStrings(string num1, string num2) {
string res="";
int n=num1.size();
int m=num2.size();
int carry=0;
int j;
for(int i=n-1,j=m-1;i>=0 || j>=0;i--,
j--){
int a;
if(i>=0){
a=((int)(num1[i])-48);
}
else {
a=0;
}
int b;
if(j>=0){
b=((int)(num2[j])-48);
}
else{
b=0;
}
cout<<num1[i]<<" "<<num2[i]<<endl;
cout<<a<<" "<<b<<endl;
int sum=carry+a+b;
int u=sum%10;
res+=u;
carry=sum/10;
}
res+=carry;
cout<<res<<endl;
reverse(res.begin(),res.end());
return res;
}
您在您的程序中声明了一个名为 res
的 std::string
,您希望从您的函数中 return。一切正常,直到这条线:
res += u;
在这一行中,您尝试将 int
添加到 string
,这将 return 出乎意料的结果。要解决此问题,您可以改用 res.push_back(u + '0')
(这会将 u
转换为字符,然后将其附加到 res
:没有意外结果)。
你也可以在下面 3 行中做同样的事情,在你输入 res += carry;
的地方,所以一定要修复它。
我在 C++ 中使用大整数库尝试了这个问题,它工作得很好,当我尝试一次从两个字符串中使用一个整数来做到这一点时
我收到 运行 时间错误,我确实尝试通过在代码中包含 cout 语句来调试它,但一切似乎都很好。
string addStrings(string num1, string num2) {
string res="";
int n=num1.size();
int m=num2.size();
int carry=0;
int j;
for(int i=n-1,j=m-1;i>=0 || j>=0;i--,
j--){
int a;
if(i>=0){
a=((int)(num1[i])-48);
}
else {
a=0;
}
int b;
if(j>=0){
b=((int)(num2[j])-48);
}
else{
b=0;
}
cout<<num1[i]<<" "<<num2[i]<<endl;
cout<<a<<" "<<b<<endl;
int sum=carry+a+b;
int u=sum%10;
res+=u;
carry=sum/10;
}
res+=carry;
cout<<res<<endl;
reverse(res.begin(),res.end());
return res;
}
您在您的程序中声明了一个名为 res
的 std::string
,您希望从您的函数中 return。一切正常,直到这条线:
res += u;
在这一行中,您尝试将 int
添加到 string
,这将 return 出乎意料的结果。要解决此问题,您可以改用 res.push_back(u + '0')
(这会将 u
转换为字符,然后将其附加到 res
:没有意外结果)。
你也可以在下面 3 行中做同样的事情,在你输入 res += carry;
的地方,所以一定要修复它。