#include<iostream>
using namespace std;
void reverse(string &a,int i,int j)
{
char temp;
//j=j-1;
while(i<j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
}
}
void reversewords(string &a)
{
string b=a,c;
int i=-1,j=0;
while(j<a.length())
{
if(i==-1 && a[j]!=' ' )
{
i=j;
}
if(a[i] && (a[j+1]==' ' || a[j+1]=='\0'))
{
reverse(a,i,j);
i=-1;
}
j++;
}
reverse(a,0,a.length()-1);
//cout<<i<<" "<<j;
}
int main()
{
string a;
getline(cin,a);
reversewords(a);
cout<<a;
}
反转字符串中单词的顺序。我通过查看堆栈溢出中的一个问题来实现上述代码
现在我的问题是我在他的一些测试用例中失败了
我得到了一些正确的测试用例,如下所示
1) 一个空字符串。
2) 只有一个空格的字符串。前任: ” ”。
3) 单词之间有多个空格的字符串。
4) 以空格开头的字符串。单个和多个。
5) 字符串末尾有空格。单个和多个。
6) 只有大写字母和小写字母的字符串
7) 带有字母数字的字符串。
8) 在步骤 7 中包含特殊字符。
9) 回文字符串。
10) 只有一个字符的字符串。
12) 大小写字母组合的字符串。
13) 只有特殊字符的字符串。
我失败的情况是
- 如果一个字符串中包含两个以上的空格
当有两个空格时,它会打印一些额外的字符。我必须做哪些更改才能获得两个以上空格的正确输出