1178: 单词数
来源:互联网 发布:5g与广电网络 编辑:程序博客网 时间:2024/05/25 08:13
Description
统计一篇文章里不同单词的总数。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。每篇文章的单词数小于1000,每个单词最多由30个字母组成。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend#
Sample Output
4
HINT
Source
#include <stdio.h>#include <stdlib.h>#include <string.h>//代码过于的冗杂繁琐typedef struct word{ char str[32];} W;int main(){ W p[1001]; char str1[1000];//这里曾经错过,范围开的过小,因为输入的是一行的单词 int i,j,k; int count = 0; while(strcmp((gets(str1)),"#")!=0) { memset(p,'\0',sizeof(p));//每篇文章都进行初始化 i=0; count=0; k=0; while(str1[i]!='\0') { j=0; while(str1[i]==' ') i++; for( ; str1[i]!=' '&&str1[i]!='\0'; i++) { p[k].str[j++]=str1[i]; } for(j=0; j<k; j++) { if(strcmp( p[k].str, p[j].str)==0) { count--; break;//只要找到相同的即跳出循环 } } count++; k++; while(str1[i]==' ')//不是多余的,此处为了避免单词后有多个空格 i++; } printf("%d\n",count); } return 0;}
下面这是大佬的一段简洁的代码
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char arr[]="#",str[30000]; while(gets(str),strcmp(str,arr)!=0) { char p[30][1010]; int i=0,j=0,k=0; while(i<strlen(str)) { if(str[i]==' ') while(str[i]==' ') i++; else { while(str[i]!=' ') p[j][k++]=str[i++]; p[j][k]='\0'; j++; k=0; } } int ans=0; for(i=0;i<j;i++) { int t=0; for(k=0;k<i;k++) { if(strcmp(p[i],p[k])==0) { t=1; break; } } if(t==0) ans++; } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- 1178: 单词数
- 数单词
- 单词数
- 单词数
- 数单词
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- 单词数
- Windows下安装MongoDB、MongoVUE、RockMongo
- 关于Android Studio "This version of android studio is incompatible with the gradle version used."的解决方法
- Json结构与封装
- 一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)
- 剑指offer题解C++【11】二进制中1的个数
- 1178: 单词数
- 浅谈UML---类图
- 使用微信支付提供的dll解析json
- Android之仿今日头条标题栏效果
- ndk jni 函数签名
- Python的替换函数——strip(),replace()和re.sub()
- SQL之to_char、lpad、rpad、substr字符串处理
- JAVA中文件类File
- FIFO、LRU、LFU的含义和原理