EOJ 3124 单词表
题目描述
提取英文文本中的单词,重复出现的单词只取一个,把它们按照字典顺序排序,建立为一个单词表。
例如:英文文本如下:
“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 单词表的更多相关文章
- JAVA基础英语单词表(下)
quantity / 'kwɔntiti / 量,数量 query ...
- NGSL + NAWL 单词表 以及学习网站
https://quizlet.com/44769538/nawl-1-1-50-flash-cards/ NAWL 网站 NAWL 单词表 + NGSL 单词表 http://www.newgen ...
- 三道习题(1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。)
#coding=gbk ''' 1.将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别. #输入格式:按字典序由小到大输入若干 ...
- English -有感过四六级后的托福单词表-附下载
好像自从上学期不高不低过了六级之后就没怎么持续接触英语的东西了,欧,除了要debug的时候遇到问题了,去Google到了再用那些仅有的英语知识去看别人的文章.可能是因为看到的都是自己平时接触过的方面的 ...
- IT 常用单词表
程序员英语单词册 前言 程序员必备的600个英语词汇(1) 程序员必备的600个英语词汇(2) 程序员必备的600个英语词汇(3) 程序员必备的600个英语词汇(4) 程序员不 ...
- Linux单词表
su:Swith user 切换用户,切换到root用户cat: Concatenate 串联uname: Unix name 系统名称df: Disk free 空余硬盘du: Disk ...
- JAVA基础英语单词表(中)
factory / 'fæktəri / 工厂 fetch ...
- JAVA基础英语单词表(上)
action / 'ækʃən / 动作,行为 active / 'ækti ...
- java单词表01
OO:object-oriented,面向对象OOP:object-orientedprogramming面向对象编程 JDK:Javadevelopmentkit,java开发工具包JVM:java ...
随机推荐
- JavaScript中的数组创建
JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元 ...
- MAVEN学习笔记之Maven插件的应用(4)
MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...
- Spring aop(实验写法)
1. 创建通知:定义一个接口 Public interface Sleepable { voidsleep(); }然后写一个Human类,他实现了这个接口 publicHuman implement ...
- ubuntu16 mysql 远程连接
打开配置文件: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 将下面一行注释掉: # bind-address = localhost 重启服务 sudo s ...
- Spring DATA MongoDB @DBref查询,or和and联合查询
@DBref文档关联,在按该类型查询的时候,在字段名后加上关联表的字段名即可,如: Criteria.where("bloggroup.$id"), $id代表关联表的oid字段. ...
- win7利用tsmmc.msc远程管理工具
win7和xp默认不带tsmmc.msc远程管理工具.我们只需要从2003的windows\system32目录下复制 mstsmhst.dll ,mstsmmc.dll 和tsmmc.msc文件放到 ...
- SciPy和Numpy处理能力
1.SciPy和Numpy的处理能力: numpy的处理能力包括: a powerful N-dimensional array object N维数组: advanced array slicing ...
- 查看linux机器cpu、内存环境信息
2C2G,4C4G,8C16G,16C32G 这里C指cpu物理核数,G指总内存大小 # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id&qu ...
- javascript中创建对象和实现继承
# oo ##创建对象 1. 原型.构造函数.实例之间的关系 * 原型的construct->构造函数:调用isPrototypeOf(obj)方法可以判定和实例的关系: * 构造函数的pro ...
- Debian 6 , 十个串口为什么只识别到了 6个 剩下4 个被禁止了
0.946441] Serial: 8250/16550 driver, 6 ports, IRQ sharing enabled [ 0.946533] serial8250: ttyS0 a ...