又是一道水题,基本思路是从目标串中根据空格分离出来每一个单词,然后分别找出最大值与最小值,输出即可~
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(int argc, char** argv) {
string S;
vector<string> V;
getline(cin,S);
string temp;
//分割单词
for(int i=0;i<=S.size()-1;i++)
{
temp+=S[i];
if(S[i]==' '||i==S.size()-1)
//最后一个单词要有单独的操作
{
V.push_back(temp);
temp.clear();
}
}
//删除除了最后一个单词以外,末尾的空格
for(int i=0;i<V.size()-1;i++)
{
string temp=V[i];
temp.erase(temp.size()-1);
V[i]=temp;
}
// cout<<endl;
// for(int i=0;i<=V.size()-1;i++)
// {
// cout<<V[i].size()<<endl;
// }
// 检验单词长度
// cout<<endl;
int max=V[0].size(),maxt=0;
int min=V[0].size(),mint=0;
//两类辅助变量
for(int i=0;i<=V.size()-1;i++)
{
//判断是否大于当前
if(V[i].size()>max)
{
max=V[i].size();
maxt=i;
}
//判断是否小于当前
if(V[i].size()<min)
{
min=V[i].size();
mint=i;
}
}
cout<<V[maxt]<<endl;
cout<<V[mint]<<endl;
return 0;
}