用户输入一个字符串,例如“3 + 2 + 1”或“1 + 3 + 2 + 1 + 3 + 1”。我只需要对字符串进行排序。但是在4-5个测试用例之后出现错误。
Input - 2
Output - �
Input - 2+1+2+2+2+3+1+3+1+2
Output - �+1+1+1+2+2+2+2+2+3
#include<iostream>
using namespace std;
int main()
{
string s;
cin>>s;
for(int i=0;i<s.size();i+=2)
{
for(int j=0;j<(s.size()-i);j+=2)
{
if(s[j]>s[j+2])
{
swap(s[j],s[j+2]);
}
}
}
cout<<s;
return 0;
}
最佳答案
正如ggorlen所说,由于您正在访问一个超出范围的值,因此出现了垃圾。进行任何交换之前,请尝试检查您的“j”索引加2是否超出范围。
#include<iostream>
using namespace std;
int main()
{
string s;
cin>>s;
for(int i=0;i<s.size();i+=2)
{
for(int j=0;j<(s.size()-i);j+=2)
{
if(j+2 < s.size() && s[j]>s[j+2])
{
swap(s[j],s[j+2]);
}
}
}
cout<<s;
return 0;
}
输入2+1+2+2+2+3+1+3+1+2
输出1+1+1+2+2+2+2+2+3+3
关于c++ - 为什么显示垃圾值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63628024/