HDOJ2072单词数
2017-07-14 11:04
274 查看
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
AC代码
我开始用自己写的函数分解字符串,将每个单词存入二维字符数组中,结果超时:
超时代码:
strtok函数的使用:
Strtok()函数详解:
该函数包含在”string.h”头文件中
函数原型:
char* strtok (char* str,constchar* delimiters );
函数功能:
切割字符串,将str切分成一个个子串
函数参数:
str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。
delimiters:表示切割字符串(字符串中每个字符都会 当作分割符)。
函数返回值:
当s中的字符查找到末尾时,返回NULL;
如果查不到delimiter所标示的字符,则返回当前strtok的字符串的指针。
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
AC代码
#include<stdio.h> #include<string.h> int main(){ int n,i,len,k,t,j; char s[1000]; char str[100][100]; while(gets(s)&&s[0]!='#'){ n=0; char *p; p=strtok(s," "); for(k=0;p!=NULL;k++) { strcpy(str[k],p); p=strtok(NULL," "); } //用strtok函数分解字符串------------------------------------ for(i=0;i<k;i++){ for(j=i+1;j<k;j++) { if(strcmp(str[i],str[j])==0){ n++;//n为重复的单词 break; } } } printf("%d\n",k-n); } return 0; }
我开始用自己写的函数分解字符串,将每个单词存入二维字符数组中,结果超时:
超时代码:
#include<stdio.h> #include<string.h> int main(){ int n,i,len,k,t,j; char s[1000]; char str[100][100]; while(gets(s)&&s[0]!='#'){ n=0; len=strlen(s); k=0; for(i=0;i<len;i++){ t=0; if(s[i]!=' '){ while(s[i]!=' '){ str[k][t++]=s[i]; i++; } k++; } else i++; } //将每个单词存入str数组中; //分解字符串------------------------------------ for(i=0;i<k;i++){ for(j=i+1;j<k;j++) { if(strcmp(str[i],str[j])==0){ n++;//n为重复的单词 break; } } } printf("%d\n",k-n); } return 0; }
strtok函数的使用:
Strtok()函数详解:
该函数包含在”string.h”头文件中
函数原型:
char* strtok (char* str,constchar* delimiters );
函数功能:
切割字符串,将str切分成一个个子串
函数参数:
str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。
delimiters:表示切割字符串(字符串中每个字符都会 当作分割符)。
函数返回值:
当s中的字符查找到末尾时,返回NULL;
如果查不到delimiter所标示的字符,则返回当前strtok的字符串的指针。
#include<stdio.h> #include<string.h> int main(void) { char buf[]="hello@boy@this@is@heima"; char*temp = strtok(buf,"@"); while(temp) { printf("%s ",temp); temp = strtok(NULL,"@"); } return0; }
相关文章推荐
- hdoj2072 单词数 (set 和 map 两种做法)
- HDOJ 2072 单词数 (set)
- hdoj2072字符串单词数
- HDOJ 2072 单词数
- HDOJ.2072 单词数(map)
- HDOJ 2072 单词数【字符串】
- 【hdoj】2072 单词数
- HDOJ 2072 单词数(trie树入门)
- hdoj 2072 单词数
- HDOJ 2072 单词数(字符串,map)
- HDoj-2072-单词数
- HDOJ 2072 单词数
- hdoj 2072 单词数
- HDOJ_2072(单词数)
- HDOJ-2072单词数(Trie树/MAP)
- HDOJ 2072 单词数
- HDOJ2072 单词数
- HDOJ2072 单词个数
- [热身题][hdoj_2072]单词数
- HDOJ2072单词数 解题报告