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 ...
随机推荐
- 3、Collection接口中的功能概述
package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /** * 集合: * 由于我们使用的是面 ...
- Vue 项目打包和上线
1.把绝对路径改为相对路径 我们打开config/index.js 会看到一个build属性,这里就我们打包的基本配置了.你在这里可以修改打包的目录,打包的文件名.最重要的是一定要把绝对目录改为相对目 ...
- mysqldump+mydumper+xtrabackup备份原理流程
mysqldump备份原理 备份的基本流程如下: 1.调用FTWRL(flush tables with read lock),全局禁止读写 2.开启快照读,获取此时的快照(仅对innodb表起作用) ...
- caffe特征提取/C++数据格式转换
Caffe生成的数据分为2种格式:Lmdb 和 Leveldb 它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库. 虽然lmdb的内存消耗是leveldb的1.1倍,但是lm ...
- OpenCV、OpenCL、OpenGL、OpenPCL
对于几个开源库的总结,作为标记,以前看过,现在开始重视起来!更详细资料请移步 开源中国社区! 涉及:OpenCV,OpenCL,OpenGL,OpenPCL 截止到目前: OpenGL的最新版本为4. ...
- DDoS攻击与防范策略
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大.最难防御的攻击之一. 按照发起的方式 ...
- 商品的CRUD操作
(1)新增商品:新增文档,建立索引 PUT /index/type/id{ "json数据"} PUT /ecommerce/product/1{ "name" ...
- springMVC常用注解的使用
一.@ResponseBody注解的使用 1. @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器,转换为指定的格式之后, 写入到response 对象 ...
- Javascript中的原型链,__proto__和prototype等问题总结
1.js中除了原始数据类型 都是对象. 包括函数也是对象,可能类似于C++函数对象把 应该是通过解释器 进行()操作符重载或其他操作, 用的时候把它当函数用就行 但是实际上本质是一个对象 原型也是一个 ...
- 一个很好的JS,ASP二级下拉框联动。
在我们制作网站会员注册信息时,一般会涉及到填写自己所在省/市,如果用input或textarea做成填写形式不太理想.所以大部分网站都会选择联动下来列表形式,做起来也不算很复杂,同时看上去也很轻松. ...