HDU 2072 单词数
单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 55351 Accepted Submission(s): 13839
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
Author
Lily
Source
Recommend
用map记录每次空格前的部分即可,要注意开头空格,结尾空格和多个空格相连的情况
记录的时候用map<string,int>而不能用map<char*,int> char*始终是一个指针保存的是地址值
而不是字符串
代码如下:
#include <cstdio> #include <iostream> #include <cstring> #include <map> #include <algorithm> using namespace std; #define INF 0x3f3f3f3f char str[1000000]; map<string,int>mp; char tmp[10000]; int main() { int l,ans,len; while(gets(str)) { ans=0; mp.clear(); if(str[0]=='#')break; len=strlen(str); str[len]=' '; len++; str[len]=0; l=0; for(int i=0;i<len;i++) { if(str[i]!=' ') { tmp[l]=str[i]; l++; } else { tmp[l]=0; if(l>0){ if(!mp[tmp]) { ans++; mp[tmp]=1; } } l=0; } } printf("%d\n",ans); } return 0; }