AcWing 774. 最长单词
原题链接
中等
作者:
逆时针
,
2020-08-10 14:38:56
,
所有人可见
,
阅读 389
C++ 代码
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main() {
string s;
getline(cin , s);
int max_length = 0;
int max_idx_start = 0;
int i = 0;
while (i != s.size()) {
// i移动到下一个单词开头,跳过空格或者'.'
while (i != s.size() && (isspace(s[i]) || s[i] == '.'))
++i;
int j = i;
// j移动到下一个单词结尾后一格,该格要么是空格,要么是'.'
while (j != s.size() && !isspace(s[j]) && s[j] != '.')
++j;
// 单词在[i, j)之间
if (j - i > max_length) {
max_length = j - i;
max_idx_start = i;
}
// 注意这里i指向了空格,所以需要第一个while循环把i移动到下一个单词开头
i = j;
}
cout << s.substr(max_idx_start, max_length) << endl;
return 0;
}