B2156 最长单词 2
欢迎报名洛谷网校,期待和大家一起进步!
本题考察字符串。
对于此类有不定个数的读入,我们可以使用 while (cin >> s),每次读入一个“以空格分隔”的字符串
因为读到的最后一个单词后面带着句号,因此在读入的时候,我们要检查
去掉句号可以使用 pop_back 函数,例如,s.pop_back() 即可直接去掉最后一个字符。你也可以使用 substr 函数。假设字符串 s 的长度为 len,那么使用 s = s.substr(0, len-1) 也可去除最后一个字符。
接着,使用打擂台法比较字符串的长度即可完成本题。
参考代码:
while (cin >> s) {
bool end = false;
// 如果最后一个字符是 '.', 就把它去掉,并标记结束
int len = s.size();
if (s[len-1] == '.') {
s = s.substr(0, len-1);
// 这一句话可以换成:s.pop_back(),注意不是 s = s.pop_back();
end = true;
}
// 比较长度,更新最长单词
if (s.size() > ans.size())
ans = s;
if (end) break; // 遇到句号,跳出循环
}