题意理解

输入一串字符串,每个单词由空格分开,输出最后一个单词的长度。

方法一

使用cin直接读入字符串会在遇到第一个空格时就停止,导致读入出错。使用getline()方法读入整行内容。再从后往前遍历,遇到第一个空格就停止,此时遍历了最后一个单词,输出对应的遍历的次数即可。

具体代码如下:

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    getline(cin, s);
    int ans=0, i=s.length()-1;
    while(i>=0 && s[i]!=' ')
    {
        i--;
        ans++;
    }
    cout<<ans;
    return 0;
}

时间复杂度:O(N)O(N)。最坏情况下字符串只有一个单词,N为字符串长度。
空间复杂度:O(1)O(1)。没有开辟新的空间。

方法二

使用while循环进行读入,当后面没有单词时循环终止。

具体代码如下:

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    while (cin>>s);
    cout<<s.size();
}

时间复杂度:O(N)O(N)。最坏情况下字符串只有一个单词。
空间复杂度:O(1)O(1)。没有开辟新的空间。