信息学奥赛一本通(1143:最长最短单词)

1143:最长最短单词


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 26726     通过数: 9724

【题目描述】

 输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。

 试输出第1个最长的单词和第1个最短单词。

【输入】

一行句子。

【输出】

第1行,第一个最长的单词。

第2行,第一个最短的单词。

【输入样例】

I am studying Programming language C in Peking University

【输出样例】

Programming
I

【提示】

提示:

如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。

【参考代码】

C代码:

#include <stdio.h>
#include <string.h>
#define N 20010
char s[N];
int main()
{
    int len,max_len=-1,min_len=101;
    int max_pos=-1,min_pos=-1;
    int i,count=0;

    gets(s);
    len=strlen(s);

    for(i=0; ;i++)
    {
        if(i==len || s[i]==' ' || s[i]==',')
        {
        	if(count > max_len)
        	{
        		max_len=count;
        		max_pos=i-count;
			}
			if(count!=0 && count < min_len)
        	{
        		min_len=count;
        		min_pos=i-count;
			}
			s[i]='\0';
			count=0;
			
			if(i==len)
				break;
		}
		else
		{
			count++;
		}
    }
	printf("%s\n",&s[max_pos]);
	printf("%s\n",&s[min_pos]);
	return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1143

 

上一篇:Solution - [AGC023A] Zero-Sum Ranges


下一篇:leetcode每日一题 2021/4/3 1143. 最长公共子序列