您的位置:首页 > 其它

EOJ 3124 单词表(排序)

2017-09-11 17:54 281 查看

题目

http://acm.ecnu.edu.cn/problem/3124/

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

注意:单词与单词之间用空格或标点符号(逗号 (,),句号 (.), 惊叹号 (!), 问号 (?))分隔;提取的单词只包含 26 个英文字符。

解题思路

用C++做可能比较麻烦,直接上python的re模块。

re.split()
的第一个参数指明分隔符的模式,第二个参数为要分割的字符串。由于本题有多个分隔符,因此选取的模式使用正则表达式。
[,;.!?\s]
表示匹配括号中的任意一个。更多详见使用多个界定符分割字符串

str = list(set(str))
用于对列表str中的元素去重,虽然这样会使得元素顺序被打乱,但考虑到后面依然要排序,所以这样写没有问题。

AC代码

#coding=utf-8
import re

kase = int(input())
for t in range(kase):
str = raw_input()
str = re.split('[,;.!?\s]', str) #多分隔符
str = list(set(str)) #去重
print str
str.sort()
output = ""
print "case #%d:"%t
for (i, v) in enumerate(str):
if v == '':
continue
output += v
if i != len(str) - 1:
output += ' '
print output
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: