Hdu 2072 单词数【字符串】
来源:互联网 发布:淘宝 购物 编辑:程序博客网 时间:2024/06/05 18:39
单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 36237 Accepted Submission(s): 8764
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend#
Sample Output
4
方法比较笨:
用循环判断,把每个单词都从字符串里分离出来,存到一个字符数组里面,然后排序,然后统计求得不同的单词数。
这样做比较坑的一个地方是,如果全部是空格,单词数是0,不是1,所以需要特殊判断一下,这个题这样做,的确有点复杂...
#include<stdio.h>#include<string.h>void swep(char a[],char b[]){char c[1005];strcpy(c,a);strcpy(a,b);strcpy(b,c);}int main(){char x[1005],y[1005][1005];int i,j,c,len,n;while(gets(x)){len=strlen(x);if(strcmp(x,"#")==0){break;}j=n=c=0;memset(y,0,sizeof(y));for(i=0;i<len;i=i+j+1){j=0;if(i+j<len&&x[i+j]!=' '){for(j=0;x[i+j]!=' '&&i+j<len;++j){y[n][j]=x[i+j];}++n;}}for(i=0;i<n;++i){for(j=0;j<n;++j){if(strcmp(y[i],y[j])>0){swep(y[i],y[j]);}}}for(i=1;i<n;++i){if(strcmp(y[i-1],y[i])!=0){++c;}}if(n==0){c=0;}else{++c;}printf("%d\n",c);}return 0;}
有一种直接调用库函数的方法,把所有的单词裂解出来,然后实现统计.......
#include<stdio.h>#include<string.h>int main(){ int i,j,t,sum,k,b[100]; char *v[1005],s[1005];//开了一个指针数组,相当于一个二维数组 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;}
好几个月了,再次做这道题,结果还是被坑了好几次,最后还是用保险的方法去统计的.....
本来以为自己还会点东西,结果发现,原来真的只会一点.....
把大神给的测试数据贡献一下.....
asdf as aasdf asdf #(相信你的眼睛,那有一行空格.....)
/*2015年1月15日13:39 */#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{char s[1005];bool friend operator < (node a,node b){return strcmp(a.s,b.s)>0;}}x[1005];int main(){char s[1005];//freopen("shuju.txt","r",stdin);while(gets(s),s[0]!='#'){memset(x,0,sizeof(x));int cnt=0,tp=0,len=strlen(s);for(int i=0;i<len;++i){if(s[i]==' '){continue;}while(i<len&&s[i]!=' '){x[cnt].s[tp++]=s[i++];}++cnt;tp=0;}sort(x,x+cnt);int ans=0;for(int i=0;i<cnt;++i){if(!i||strcmp(x[i-1].s,x[i].s)!=0){++ans;}}printf("%d\n",ans);}return 0;}
0 0
- Hdu 2072 单词数【字符串】
- hdu 2072 单词数 字符串处理
- HDU 2072 单词数(字符串处理)
- HDU 2072 单词数 【字符串】【基础】
- HDU-1274展开字符串/HDU-2072单词数
- HDU 2072 单词数
- hdu 2072 单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- Hdu 2072 - 单词数
- Hdu 2072 单词数
- hdu 2072-单词数
- hdu 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- HDU 2072 单词数
- hdu 2072 单词数
- 游程编码
- JAVA基础之多线程
- UITabBar自定义方式三(中间有按钮)
- 一步一步学习网页开发之一
- 线程之从线程返回信息
- Hdu 2072 单词数【字符串】
- ZOJ 1048 Financial Management
- php开发中代码完好,图像或验证码不显示
- Java谣言终结者之Arraylist和Linkedlist到底谁快
- POJ 2479 Maximum sum & POJ 2573 Max Sequence (DP,最大连续子串和)
- java基础语法--02
- 设计模式_适配器模式
- c++ vector
- Android studio .9.png图片报错问题解决