题目描述

提取英文文本中的单词,重复出现的单词只取一个,把它们按照字典顺序排序,建立为一个单词表。

例如:英文文本如下:

“ask not what your country can do for you,ask what you can do for your country.”

提取的非重复单词为:

ask not what your country can do for you

排序后建立的单词表为:

ask can country do for not what you your

注意:

(1) 单词与单词之间用空格或标点符号(逗号 (,),句号 (.), 惊叹号 (!), 问号 (?))分隔。

(2) 提取的单词只包含 26 个英文字符。

Input

第 1 行:一个整数 T (1≤T≤10) 为问题数。

接下来 T 行,每行输入一段文本,文本长度不超过 500 个字符。

文本由空格,逗号 (,),句号 (.), 惊叹号 (!), 问号 (?) 以及 26 个小写英文字符组成。
Output

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。

然后对应每个问题 , 在一行中输出建立的单词表,单词与单词之间用一个空格分隔。最后一个单词后面没有空格。

 #include <iostream>
#include <stdio.h>
#include <set>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int T,m=; scanf("%d\n",&T);
while(T--)
{
printf("case #%d:\n",m++);
string ss,tmp;
getline(cin,ss);
set <string> graph;
for(int i=;i<ss.size();i++)
if(!isalpha(ss[i])) ss[i]=' ';
stringstream a(ss); while(a>>tmp) graph.insert(tmp); set<string>::iterator it=graph.begin();
for(int j=;j<graph.size()-;j++,it++)
cout<<*it<<" ";
cout<<*it<<endl;
}
return ;
}

显然是使用set嘛,至于如何把每个单词读入,看16,17行,将分隔符改成空格,然后用stringstream流,一个一个提取单词之后读入set中,set自动排序美滋滋。


stringstream的运行机制不明,有待学习。

 #include<bits/stdc++.h>
using namespace std;
int main()
{
int t; string str, tmp;
(cin >> t).get();
for (int c = ; c < t; c++)
{
getline(cin, str);
for (auto &i : str)
if (!isalpha(i))i = ' ';
stringstream ss(str);
set<string>ans;
while (ss >> tmp)ans.insert(tmp);
auto x = ans.begin();
cout << "case #" << c << ":\n" << *x;
while (++x != ans.end())
cout << ' ' << *x;
cout << endl;
}
}

这个做法思路一样,不过更精简,得益于

for (auto &i : str)

以及在控制“最后一个不带空格”的条件上也处理的很好。

#include<bits/stdc++.h> 到底是个啥玩意儿?



EOJ 3124 单词表的更多相关文章

  1. JAVA基础英语单词表(下)

    quantity                     / 'kwɔntiti /                    量,数量 query                             ...

  2. NGSL + NAWL 单词表 以及学习网站

    https://quizlet.com/44769538/nawl-1-1-50-flash-cards/ NAWL 网站 NAWL 单词表  + NGSL 单词表 http://www.newgen ...

  3. 三道习题(1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。)

    #coding=gbk ''' 1.将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别. #输入格式:按字典序由小到大输入若干 ...

  4. English -有感过四六级后的托福单词表-附下载

    好像自从上学期不高不低过了六级之后就没怎么持续接触英语的东西了,欧,除了要debug的时候遇到问题了,去Google到了再用那些仅有的英语知识去看别人的文章.可能是因为看到的都是自己平时接触过的方面的 ...

  5. IT 常用单词表

    程序员英语单词册   前言   程序员必备的600个英语词汇(1)   程序员必备的600个英语词汇(2)   程序员必备的600个英语词汇(3)   程序员必备的600个英语词汇(4)   程序员不 ...

  6. Linux单词表

     su:Swith user  切换用户,切换到root用户cat: Concatenate  串联uname: Unix name  系统名称df: Disk free  空余硬盘du: Disk  ...

  7. JAVA基础英语单词表(中)

    factory                                 / 'fæktəri /                    工厂 fetch                     ...

  8. JAVA基础英语单词表(上)

    action                            / 'ækʃən /          动作,行为 active                           / 'ækti ...

  9. java单词表01

    OO:object-oriented,面向对象OOP:object-orientedprogramming面向对象编程 JDK:Javadevelopmentkit,java开发工具包JVM:java ...

随机推荐

  1. 二次排序问题(分别使用Hadoop和Spark实现)

    不多说,直接上干货! 这篇博客里的算法部分的内容来自<数据算法:Hadoop/Spark大数据处理技巧>一书,不过书中的代码虽然思路正确,但是代码不完整,并且只有java部分的编程,我在它 ...

  2. 用命令行在本地创建一个库并上传到Github

    1  如何在本地创建一个仓库并上传到github? 基本步骤: $ mkdir blog //在桌面上创建一个叫"blog"的目录 $ cd blog //"cd blo ...

  3. android黑科技系列——破解游戏之修改金币数

    我们在玩游戏的时候总是会遇到一些东东需要进行购买的,但是我们可能又舍不得花钱,那么我们该怎么办呢?那就是用游戏外挂吧!我们这里说的是Android中的游戏,在网上搜索一下移动端游戏外挂,可能会找到一款 ...

  4. RAID5存储上parted进行分期及UUID对应关系

    #parted [设备] [命令 [参数]]命令功能: 新增分区:mkpart [primary|logical|extended] [ext3|vfat] 开始 结束 分区表:print 删除分区: ...

  5. 组装自己的tesla超级计算机

    原文链接:blog.csdn.net/xqj198404/article/details/20016279 NVIDIA链接:http://www.nvidia.cn/object/tesla_bui ...

  6. CUDA 编程实例:计算点云法线

    程序参考文章:http://blog.csdn.net/gamesdev/article/details/17535755  程序优化2 简介:CUDA ,MPI,Hadoop都是并行运算的工具.CU ...

  7. LoadRunner时间戳函数web_save_timestamp_param

    举例:1520822348346(13位,毫秒级)   做时间戳的目的是为了JS缓存和防止CSRF,在LR中可以简单的使用下面这个函数 web_save_timestamp_param 来生成时间戳 ...

  8. Lazy Stored Properties--无括号时为匿名函数

    第一次使用的时候进行计算和初始化,后面的引用不在进行计算. A lazy stored property is a property whose initial value is not calcul ...

  9. 10件5G能实现,但4G不能做的事情

    10件5G能实现,但4G不能做的事情 从三星Galaxy S10 5G手机到OnePlus 7 Pro 5G手机以及更高版本,首批5G手机现已上市.5G网络时代的开启是从小范围内,如果你居住在可以使用 ...

  10. 【JavaScript框架封装】实现一个类似于JQuery的DOM框架的封装

    // DOM框架(选择器框架) (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * 向现 ...