中级光能
题目描述 Description
输入1行句子(不多于100个单词,每个单词长度不超过100),只包含字母和空格。单词由至少一个连续的字母构成,单词与单词之间只有一个空格。试输出第1个最长的单词和第1个最短单词。
输入描述 Input Description
一行句子,包括单词和空格。
输出描述 Output Description
两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。
样例输入 Sample Input
I am studying programming language pascal in University of Science and technology of China
样例输出 Sample Output
programming
I
数据范围及提示 Data Size & Hint
如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
#include<iostream>
using namespace std;
int main(){
string a,s1,s2;
getline(cin,a);
int xb=0;
a=" "+a+" ";
for(int i=0;i<a.size();i++){
if(a[i]!=' '&&a[i-1]==' '){
xb=i;
}
if(a[i]!=' '&&(i+1==a.size()||a[i+1]==' ')){
string s3=a.substr(xb,i-xb+1);
s1=s3;
s2=s3;
break;
}
}
for(int i=0;i<a.size();i++){
if(a[i]!=' '&&a[i-1]==' '){
xb=i;
}
if(a[i]!=' '&&(i+1==a.size()||a[i+1]==' ')){
string s3=a.substr(xb,i-xb+1);
if(s3.size()>=s1.size()){
s1=s3;
}
if(s3.size()<=s2.size()){
s2=s3;
}
}
}
cout<<s1<<"\n"<<s2;
return 0;
}
60分 Wrong Answer
贾一凡在2022-06-28 10:27:48追加了内容
回答即采纳