使用字符串查找函数 [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 求解。