最长最短单词

Posted Ed_Sheeran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长最短单词相关的知识,希望对你有一定的参考价值。

最长最短单词


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

【题目描述】

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

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

 

【输入】

一行句子。

【输出】

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

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

【输入样例】

I am studying Programming language C in Peking University

【输出样例】

Programming
I

【提示】

提示:

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

 

【题解】得到字符串后先拆分单词,flag记录当前状态,再将单词长度比较

#include<iostream>
#include<vector>
using namespace std;

vector <char> s3,s1,s2;
int maxn=0,minn=5000;

void cmp(int l,int &ma,int &mi){
    if(l<mi){
        mi=l;s2.clear() ;
        for(vector<char>::iterator it =s3.begin();it!=s3.end();it++){
            s2.push_back(*it); 
        }
    }
    if(l>ma){
        ma=l;s1.clear() ;
        for(vector<char>::iterator it =s3.begin();it!=s3.end();it++){
            s1.push_back(*it); 
        }
    }
    
}
void remake(string s){
    int flag=0;
    for(int i=0;i<s.size();i++){
        if(s[i]!=,&&s[i]!= ){
            s3.push_back(s[i]); flag=1;
        }else{
            if(flag)cmp(s3.size(),maxn,minn);
            s3.clear() ;flag=0;
        }
    }
    if(!s3.empty())    cmp(s3.size(),maxn,minn);
}
int main(){
    string s;
    getline(cin,s);
    remake(s);
    for(vector<char>::iterator it =s1.begin();it!=s1.end();it++){
            cout<<*it;
        }
    cout<<endl;
    for(vector<char>::iterator it =s2.begin();it!=s2.end();it++){
            cout<<*it;
        }
    
} 

 

以上是关于最长最短单词的主要内容,如果未能解决你的问题,请参考以下文章

输出最短单词 C语言

C语言 统计歌词中的单词个数,并找出最短和最长的单词(必须用指针)求帮忙,感谢!!!

一个c语言问题,编写一个函数,从键盘输入一行字符,将此字符串中最长和最短的单词输出

正则表达式将字符串限制为最短匹配与最长匹配(非贪婪组)?

C语言中 输入一个字符串,输出最短的单词 求代码,加急

Javascript reduce() 查找字符串中最短的单词