测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A25282. word问题描述输入一段文本,行数不超过200行。每行上有若干个单词,每行上的单词数不超过200。单词是指用空白符分开的连续字符串。你的任务是:统计每一行上的单词数,并将每行上的单词按字典序从小到大排序。输入说明不定长度的一段文本。输出说明若干行,每行的格式是:首先是一个整数n,表示这一行上的单词个数,然后依次输出排序后的n个单词。数据之间用一个空格分隔。样例输入this is a test a…

填空题 中等

题目描述

word

问题描述

输入一段文本,行数不超过200行。每行上有若干个单词,每行上的单词数不超过200。单词是指用空白符分开的连续字符串。

你的任务是:统计每一行上的单词数,并将每行上的单词按字典序从小到大排序。

输入说明

不定长度的一段文本。

输出说明

若干行,每行的格式是:首先是一个整数n,表示这一行上的单词个数,然后依次输出排序后的n个单词。数据之间用一个空格分隔。

样例输入

this is a test
and can you do it

样例输出

4 a is test this
5 and can do it you

提示

如果某一行上单词数为0,要输出一个0。

行末不能有多余的空格。


参考答案

#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string a; while (getline(cin, a)) // 一次接收一行 { a += " "; // 末尾加上空格,方便处理最后一个单词 int i, t = 0, la = a.size(); string word[200]; // 每行上的单词数不超过200 for (i = 0; i < la; i++) { string temp; // 本次要截取的单词 while (a[i] != ' ') { temp += a[i]; i++; } // 排除连续空格造成的空单词 if (temp.size() > 0) { word[t++] = temp; } } sort(word, word + t); // 按字典序排序 // 输出处理结果 if (t == 0) // 没有有效单词 { cout << 0 << endl; } else { cout << t << " "; for (i = 0; i < t - 1; i++) { cout << word[i] << " "; } cout << word[t - 1] << endl; // 最后一个单词后无空格 } } return 0; }

答案解析

字符串的综合应用题,需要用到“单词匹配”的一些技巧,方法有很多。

常规思路:一次读取一行,利用分隔符去划分单词,计数的同时完成存储,再完成排序工作。

上一题 下一题