|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有一段英文由若干单词组成, 单词之间用空格隔开,编写程序提取其中的所有不同的单词,按字典序从小到大输出。
输入格式:
输入一行字符串
输出格式:
输出每个单词,每个单词占一行
输入样例:
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[i])) //是字母,说明找到一个有效单词
{
string word = ""; //存储以s[i]为首字母的这个单词
int j = i;
while(j < s.size() && isalpha(s[j])) //如果是字母一直往后找
{
word += tolower(s[j]);
j ++;
}
cnt[word] ++; //循环结束,说明word就是刚才找到的单词
i = j;
}
}
for(auto [k, v] : cnt) cout << k << endl;
return 0;
}
本帖最后由 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[i])) //是字母,说明找到一个有效单词
- {
- string word = ""; //存储以s[i]为首字母的这个单词
- int j = i;
- while(j < s.size() && isalpha(s[j])) //如果是字母一直往后找
- {
- word += s[j];
- j ++;
- }
- cnt[word] ++; //循环结束,说明word就是刚才找到的单词
- i = j;
- }
- }
- for(auto [k, v] : cnt) cout << k << endl;
- return 0;
- }
复制代码
解释:题目说若干单词,单词可能有字母,所以你可以尝试不用什么转小写,如果还是错的,就把字母判断改成非空格判断
|
|