博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2072 单词数
阅读量:5060 次
发布时间:2019-06-12

本文共 1407 字,大约阅读时间需要 4 分钟。

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 66022    Accepted Submission(s): 16607

Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
 

 

Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
 

 

Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
 

 

Sample Input
you are my friend #
 

 

Sample Output
4
 

 

Author
Lily
 

 

Source
 

 

Recommend
linle   |   We have carefully selected several similar problems for you:            
 
 
本来想直接map,但是测试了一下单词可能很长,map就不适用了,所以用字典树,每次输入一行,也就是样例的间隔是回车,样例内部单词的间隔是空格,所以用getline读入一个string,然后用istringstream,一次读入一个单词,ex标记单词是否存在。
代码:
#include 
#include
#include
#include
using namespace std;int pos;int trie[100001][26];bool ex[100001];int Insert(string s) { int i = 0,c = 0,len = s.size(); while(i < len) { int d = s[i] - 'a'; if(!trie[c][d]) { trie[c][d] = ++ pos; } c = trie[c][d]; i ++; } if(!ex[c]) { ex[c] = true; return 1; } return 0;}int main() { string s; while(getline(cin,s) && s != "#") { istringstream in(s); memset(ex,false,sizeof(ex)); string t; int c = 0; while(in>>t) { c += Insert(t); } printf("%d\n",c); }}

 

转载于:https://www.cnblogs.com/8023spz/p/9591319.html

你可能感兴趣的文章
关于js sort排序方法
查看>>
JAVA面试常见问题之Redis篇
查看>>
javascript:二叉搜索树 实现
查看>>
网络爬虫Heritrix源码分析(一) 包介绍
查看>>
__int128的实现
查看>>
Problem - 1118B - Codeforces(Tanya and Candies)
查看>>
jdk1.8 api 下载
查看>>
svn 图标不显示
查看>>
getElement的几中属性介绍
查看>>
iOS 使用Quartz 2D画虚线 【转】
查看>>
平面最接近点对
查看>>
HTML列表,表格与媒体元素
查看>>
PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点?
查看>>
感谢青春
查看>>
Jquery Uploadify4.2 falsh 实现上传
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
linux基础-命令
查看>>
java对象的深浅克隆
查看>>
Hadoop流程---从tpch到hive
查看>>
数据结构3——浅谈zkw线段树
查看>>