【问题标题】:test cases for Reverse words in a given string给定字符串中反向单词的测试用例
【发布时间】:2013-07-04 09:11:56
【问题描述】:
#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) 只有特殊字符的字符串。

我失败的情况是

  1. 如果一个字符串中包含两个以上的空格

当有两个空格时,它会打印一些额外的字符。我必须做哪些更改才能获得两个以上空格的正确输出

【问题讨论】:

  • +1 用于测试用例。您能否举例说明未通过测试的输入、预期输出和实际输出。
  • 测试用例 2) 对我来说失败了。此外,您忘记在该代码中添加#include &lt;string&gt;,否则它不会编译。

标签: c++ string reverse


【解决方案1】:

如果你只是在字符''之后添加一个标志,这样你的代码就不会认为它是一个新词,那么你的问题应该得到解决。我想问题是您是否要在输出中打印空白。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2020-05-07
    • 2015-06-02
    • 2015-12-13
    • 1970-01-01
    相关资源
    最近更新 更多