giegie666 发表于 2023-3-12 21:23:21

为什么测试时有部分错误

有一段英文由若干单词组成, 单词之间用空格隔开,编写程序提取其中的所有不同的单词,按字典序从小到大输出。

输入格式:
输入一行字符串

输出格式:
输出每个单词,每个单词占一行

输入样例:
hello world
输出样例:
hello
world




#include <bits/stdc++.h>
using namespace std;

const int N = 1010;

map<string, int> cnt;

int main()
{
    string s;

    getline(cin, s);

    for(int i = 0; i < s.size(); i ++)
    {
      if(isalpha(s)) //是字母,说明找到一个有效单词
      {
            string word = ""; //存储以s为首字母的这个单词
            int j = i;

            while(j < s.size() && isalpha(s)) //如果是字母一直往后找
            {
                word += tolower(s);
                j ++;
            }

            cnt ++; //循环结束,说明word就是刚才找到的单词
            i = j;
      }
    }

    for(auto : cnt) cout << k << endl;

    return 0;
}

zhangjinxuan 发表于 2023-3-13 18:58:17

没办法,只能造数据自己去hack

zhangjinxuan 发表于 2023-3-13 18:59:54

本帖最后由 zhangjinxuan 于 2023-3-13 19:01 编辑

试试这个:
#include <bits/stdc++.h>
using namespace std;

const int N = 1010;

map<string, int> cnt;

int main()
{
    string s;

    getline(cin, s);

    for(int i = 0; i < s.size(); i ++)
    {
      if(isalpha(s)) //是字母,说明找到一个有效单词
      {
            string word = ""; //存储以s为首字母的这个单词
            int j = i;

            while(j < s.size() && isalpha(s)) //如果是字母一直往后找
            {
                word += s;
                j ++;
            }

            cnt ++; //循环结束,说明word就是刚才找到的单词
            i = j;
      }
    }

    for(auto : cnt) cout << k << endl;

    return 0;
}


解释:题目说若干单词,单词可能有字母,所以你可以尝试不用什么转小写,如果还是错的,就把字母判断改成非空格判断
页: [1]
查看完整版本: 为什么测试时有部分错误