HDU 2072 单词数
2015-07-23 10:50
393 查看
单词数
[align=left]Problem Description[/align]lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
[align=left]Input[/align]
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
[align=left]Output[/align]
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
[align=left]Sample Input[/align]
you are my friend
#
[align=left]Sample Output[/align]
4
代码:
第一种方法:strtok函数和指针数组实现
#include<stdio.h> #include<string.h> int main() { int i,j,t,sum,k; char *v[100]; char s[1000]; int b[100]; while(gets(s)) { memset(b,1,sizeof(b)); if(s[0]=='#') break; i=0; v[i]=strtok(s," "); while(v[i]) { i++; v[i]=strtok(NULL," "); } for(j=0;j<i-1;j++) for(t=j+1;t<i;t++) if(strcmp(v[j],v[t])==0) b[t]=0; for(sum=0,k=0;k<i;k++) if(b[k]) sum++; printf("%d\n",sum); } return 0; }
第二种方法:用set实现
#include<set> #include<string> #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { //freopen("in.txt","r",stdin); int i,j; char temp[2005]; char s[2005]; string sub; while(gets(s)&&strcmp(s,"#")!=0) { set<string>S; int len=strlen(s); s[len]=' '; s[++len]='\0'; for(i=0;i<len;i++) if(s[i]!=' ')break; for(j=0;i<len;i++) { if(s[i]==' ') { if(s[i+1]==' ')continue; temp[j]='\0'; j=0; sub=temp; S.insert(sub); continue; } temp[j++]=s[i]; } int ans=S.size(); cout<<ans<<endl; } return 0; }
相关文章推荐
- LeetCode #18 4Sum
- Cocos2d-JS坐标系
- 基于MFC的手写体识别
- 多态与虚函数
- js获取url传递参数
- UIAlertView 提示弹窗
- java中final关键字详解
- HTML DOM方法:setTimeout与setInterval
- eclipse android开发中关于XML文件效果即Graphical Layout 显示不出效果
- 如何成为Python高手
- linux 应用程序的执行过程详解
- 关于opencv2.4.9和VS2013在windows7下无法打开摄像头的问题的扯
- 指针书和数组
- 一段文字设置多种字体颜色
- Objective-C学习笔记(九)——循环语句while的使用方法
- 利用CSS的类名切换,进行DIV的显示隐藏,简化JS
- 流水记录方式
- Android实现记住密码自动登录
- 流水记录方式
- 《JAVA与模式》之抽象工厂模式