首页 > 代码库 > 题目遇到问题,有高手解决,不胜感激!
题目遇到问题,有高手解决,不胜感激!
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
我的思路:讲输入的字符串中的字母统计出来,之后在对其进行是否相同比较,但最后总是纠结于最后的空格。
附代码及分析:
#include<stdio.h>#include<string.h> int main() { char a[10000],b[10000][100]; int c[10000]={0}; int i,j,k,n,len,t,s,sum,num; while(gets(a)) { if(strcmp(a,"#")==0) break; len=strlen(a); n=0;k=0;j=0; for(i=0;i<len;i++) { if(a[i]!=' ') //在此开始记录单词 { b[j][n++]=a[i]; k=1; //k的作用就是判断单词是否在统计 } if(a[i]==' '&&k==1) //每个单词统计完之后,单词为加'\0' { b[j][n]='\0'; //所有初始数据全部清零 k=0; n=0; j++; } } num=0; for(i=0;i<=j;i++) //这一块的目的就是为了去除统计进去的空格,统计单词个数,可感觉没用,应为下边最后还得判断最后是否为空格
{ if(strcmp(b[i]," ")!=0) num++; } t=num; sum=0; for(i=0;i<t;i++) { for(j=i+1;j<t;j++) { if(strcmp(b[i]," ")!=0) { if(strcmp(b[j],b[i])==0) { strcpy(b[j]," "); sum++; } } } } if(a[len-1]==' ') t--; //纠结点就在此处,加上就AC,不加就WR printf("%d\n",t-sum); } return 0; } 望有高手指点迷津,最后一块if(a[len-1]==' ') t--;和中间的剔除空格统计字母那一块;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。