给定字符串中的反向词的测试用例

时间:2013-07-06 12:17:25

标签: c++ string reverse

#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;
}

反转string.i中单词的顺序,通过查看堆栈溢出中的一个问题来实现上面的代码

现在我的问题是我在某些测试用例中失败了

我得到了一些正确的测试用例,如下所示

1)空字符串。

2)只有一个空格的字符串。例如:“”。

3)字间有多个空格的字符串。

4)起始处有空格的字符串。单个和多个。

5)末尾有空格的字符串。单个和多个。

6)只有大写且只有小写字母的字符串

7)带有字母数字的字符串。

8)在步骤7中包含特殊字符。

9)作为回文的字符串。

10)只有一个字符的字符串。

12)包含大写和小写字母组合的字符串。

13)只包含特殊字符的字符串。

我失败的情况是

  1. 如果字符串中包含两个以上的空格
  2. 当有两个空格时,它会打印一些额外的字符。为了获得两个以上空格的正确输出,我必须做些什么改变

1 个答案:

答案 0 :(得分:0)

如果您只是在角色出现后添加一个标记。 &#39;所以你的代码不会认为它是一个新词然后你的问题应该解决。我想问题是你是否要在输出中打印空白区域。