HJ1 字符串最后一个单词的长度 | 杂乱无章的初级程序员的题解
字符串最后一个单词的长度
http://www.nowcoder.com/questionTerminal/8c949ea5f36f422594b306a2300315da
使用字符串查找函数 [string.find]
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
// rfind 成功查找返回索引(从 0 开始),否则返回 npos (size_t)(-1)
cout << s.length() - 1 - s.rfind(' ') << endl;
}
反向迭代器
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
size_t lastWordLen = 0;
for (auto i = s.rbegin(); i < s.rend(); ++i) {
if (*i == ' ') {
break;
}
++lastWordLen;
}
cout << lastWordLen << endl;
}
C++20 [std::ranges::reverse_view]
牛客无法运行,请在支持 C++20 的环境下测试
#include <iostream>
#include <ranges>
#include <string>
using namespace std;
int main()
{
string s;
getline(cin, s);
size_t lastWordLen = 0;
for (auto c : s | std::views::reverse) {
if (c == ' ') {
break;
}
++lastWordLen;
}
cout << lastWordLen << endl;
}
变更履历: 2022/5/10:对 s.rfind() 添加注释,新增反向迭代器和 std::ranges::reverse_view 求解。