校赛B 长单词

来源:互联网 发布:一个淘宝网站值多少钱 编辑:程序博客网 时间:2024/04/30 02:13
 长单词
"我在马路边,捡到一毛钱,把它交到学长蜀黍手里边,学长问我志在何方,我说我要考英语八级!"。“考过还要考8.1级!”小杰最喜欢英语了,尤其是喜欢和他的小伙伴李有才比赛找长单词,他们比谁发现的单词最长。小杰找来了很多的报纸、杂志。看着满版的英文,李有才童鞋盘算着先故作痴呆来使对方大意,谁知走火入魔无法自拔,结果真成傻子了(其实我觉得他本来就挺傻的,你说呢?——审题者注)。你知道小杰为什么这么厉害吗?猜猜看?因为他有春哥的超级记忆力帮助啊!真的假的啊他这么叼学长蜀黍知道不?当然是真滴啊,不然怎么找的那么准!不对哦!记数字跟单词长度有毛关系啊!额。。因为他有聪明的你嘛!

Input
输入是一段英语文章。一段文章最多有 1000 个单词,每个单词的最大长度为100.)

Output
一个整数,表示这篇文章里最长的单词的长度。


Sample Input
EUREKA, Calif. (AP) - A powerful magnitude-6.9 earthquake struck Sunday night off the coast of Northern California, but there were no immediate reports of injury or damage and no danger of a tsunami, officials said. "I can come today," she said, "but not tomorrow."
Sample Output
13
HINT
文章中可能存在的标点有:
引号 "
逗号 ,
句号 .
括号 ()

连字符 -(连字符连起来的算作一个单词,例如样例中的 magnitude-6.9)



看到题,就感觉判断条件很模糊,比如  空格加 - 加个单词,这个-也算进去吗...  小数是个单词吗?什么时候标点算作是间断符?依靠我的判断试着提交了一下,居然过了。。。

方法倒不复杂,空格代替特定标点,然后记数,本来想边判断边记数的,感觉有点麻烦,不如这个好理解并且好编代码,而且也不会超时。

#include <stdio.h>#include <stdlib.h>#include<ctype.h>#include<string.h>int main(){    char a[100005];    int i,j;    gets(a);    int n=strlen(a);    if(!isalnum(a[0]))        a[0]=' ';    for(i=1; i<n-1; i++)    {        if(!isalnum(a[i]))        {            if(a[i]=='"'||a[i]==','||a[i]=='('||a[i]==')')                a[i]=' ';            else if((a[i]=='.')&&(!isdigit(a[i-1])||!isdigit(a[i+1])))                a[i]=' ';            else if((a[i]=='-')&&(!isalnum(a[i-1])||!isalnum(a[i+1])))                a[i]=' ';        }    }    if(!isalnum(a[n-1]))        a[n-1]=' ';     //puts(a);    int count=0,max=0;    for(i=0; i<n; i++)    {        if(a[i]!=' ')            count++;        else        {            if(count>max)                max=count;            count=0;        }    }    printf("%d\n",max>count? max:count);    return 0;}



0 0
原创粉丝点击