C++ 实现最长单词的求解
题目介绍:
Description
一个以‘.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式。
输入格式
一个以‘.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。
输出格式
该句子中最长的单词。如果多于一个,则输出第一个。
输入样例
I am a student of Peking University.
输出样例
University
提示
注意字符"."不属于单词。
实现代码:
//---最长字符串---
#include"iostream"
#include"string"
using namespace std;
int main(){
string s[101];//定义一个字符串数组
int i=0;
cin>>s[0];
int maxv=0,M=0;//用maxv来寻找最长的单词,用"i"来标记最长单词的下标
//判断循环条件,即当输出最后一个单词时跳出循环。标志为字符->'.'
while(s[i][s[i].size()-1]!='.'){
if(maxv<s[i].size()){
maxv=s[i].size();//求最长串对应的下标
M=i;
}
i++;
cin>>s[i];
}
//判断最后一个单词是不是最长
// 注意!当最后一个单词为最长单词时要除去最后那个->'.'
if(maxv<s[i].size()-1){
maxv=s[i].size()-1;
M=i;
}
if(M==i)
cout<<s[M].substr(0,s[M].size()-1);//当是最后一个单词时,输出除去'.'的单词
else
cout<<s[M];
}