一个以 . 结尾的简单英文句子,单词之间用单个空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。
输入格式
输入一行字符串,表示这个简单英文句子,长度不超过 500
。
输出格式
该句子中最长的单词。如果多于一个,则输出第一个。
输入样例:
I am a student of Peking University.
输出样例:
University
本题需要注意的是处理最后一个.符号即可。
利用stringstream进行处理,这里简单记录一下。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;int main ()
{string s, str, maxs;getline(cin, s);int maxn = -1;stringstream ssin(s);while(ssin >> str) {int len = str.size();if(str[len - 1] == '.') {len --;str = str.substr(0, len);}if(len > maxn) {maxn = len;maxs = str;}}cout<<maxs<<endl;return 0;
}
stringstream:
stringstream 是 C++ 标准库中的一个类,它提供了一个将字符串视为输入或输出流的机制。stringstream 可以方便地进行字符串和其他基本数据类型之间的转换,例如从字符串中提取数字,或将数字转换为字符串。
创建一个stringstream 对象 ssin,并将输入的字符串 s 初始化为该对象的内容,将输入的字符串分割成一个个单词,然后通过循环逐个处理这些单词。这样可以方便地处理字符串中的每个单词而不用担心空格的位置。