最長最短單詞
阿新 • • 發佈:2017-08-09
spa 輸入 空格 font end 輸出 鏈接 empty line
鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1143
最長最短單詞
鏈接: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){ intflag=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; } }
最長最短單詞