Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
对于这题笔者就是要用到一个新的函数就是strtok()函数,并且要懂得它的用法;
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char str[500000];
char ss[10000][30] ;
int des[10000];
int main( )
{
while( gets( str ) && str[0] != '#' )
{
memset( des , 0 , sizeof( des ) ) ;
int count = 0 ;
int i = 0 ;
char *p = strtok( str , " " );
while( p != NULL )
{
strcpy( ss[i++] , p ) ;
p = strtok( NULL , " " ) ;
}
for( int j = 0 ; j < i ; j++ )
{
for( int k = j+1 ; k < i ; k++ )
if( strcmp( ss[j] , ss[k] ) == 0 )des[k] = 1;
}
for( int j = 0 ; j < i ; j++ )
if( des[j]== 0 )
count++ ;
printf("%d\n" , count ) ;
}
return 0;
}