1. 程式人生 > >最長最短單詞

最長最短單詞

spa 輸入 空格 font end 輸出 鏈接 empty line

最長最短單詞


鏈接: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; } }

最長最短單詞