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;}



原创粉丝点击