描述
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
输入
一行句子。
输出
两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。
样例输入
I am studying Programming language C in Peking University
样例输出
Programming
I
提示
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
#include <bits/stdc++.h>
using namespace std;
char s[20000];
struct word{
int len;
vector<string> words;
};
word wd[200];
int main()
{
int min=101,max=0,num=0,l,i,fmin,fmax;
char sp[3]={' ',','};
const char * split=sp;
gets(s);
char *temp = strtok(s,split);
while(temp!=NULL)
{
l = strlen(temp);
for(i=0;i<num;i++)
{
if(wd[i].len==l)
{
wd[i].words.push_back(temp);
break;
}
}
if(i==num)
{
wd[num].len = l;
wd[num].words.push_back(temp);
num++;
}
temp = strtok(NULL,split);
}
for(int j=0;j<num;j++)
{
if(wd[j].len>max)
{
max = wd[j].len;
fmax = j;
}
if(wd[j].len<min)
{
min = wd[j].len;
fmin = j;
}
}
cout<<wd[fmax].words[0]<<endl;
cout<<wd[fmin].words[0]<<endl;
return 0;
}