单词数
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
题意描述:
求出一篇小文章里不同单词的个数。
解题思路:
看了网上的题解都是用的C++或者字典树解的。我写的是将文章的每个单词都存入一个字符型二维数组里,一个单词占一行。在双重循环比较。找出不同单词的个数。
程序代码:
#include<stdio.h>
#include<string.h>
char s[1010];
char ch[1010][1010];
int main()
{
int i,j,num,len,h,k,f;
while(gets(s))
{
if(s[0]=='#')
break;
len=strlen(s);
num=0;
if(s[0]==' ')
{
j=0;
for(i=0;i<=len-1;i++)
{
if(s[i]==' '&&s[i+1]!=' '&&s[i+1]!='\0')
{
k=0;
for(h=i+1;s[h]!=' '&&s[h]!='\0';h++)
{
ch[j][k++]=s[h];
}
ch[j][k]='\0';
j++;
i=h-1;
}
}
}
if(s[0]!=' ')
{
j=0;
for(i=0;i<=len-1;i++)
{
if(i==0)
{
k=0;
for(h=i;s[h]!=' '&&s[h]!='\0';h++)
{
ch[j][k++]=s[h];
}
ch[j][k]='\0';
j++;
i=h-1;
}
if(i>0&&s[i]==' '&&s[i+1]!=' '&&s[i+1]!='\0')
{
k=0;
for(h=i+1;s[h]!=' '&&s[h]!='\0';h++)
{
ch[j][k++]=s[h];
}
ch[j][k]='\0';
j++;
i=h-1;
}
}
}
h=j-1;
// for(j=0;j<=h;j++)
// printf("%s\n",ch[j]);
num=0;
for(i=0;i<=h;i++)
{
if(i==0)
num++;
else
{
f=0;
for(j=0;j<i;j++)
{
if(strcmp(ch[i],ch[j])==0)
{
f=1;
break;
}
}
if(f==0)
num++;
}
}
printf("%d\n",num);
}
return 0;
}