题意理解
输入一串字符串,每个单词由空格分开,输出最后一个单词的长度。
方法一
使用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;
}
时间复杂度:。最坏情况下字符串只有一个单词,N为字符串长度。
空间复杂度:。没有开辟新的空间。
方法二
使用while循环进行读入,当后面没有单词时循环终止。
具体代码如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
while (cin>>s);
cout<<s.size();
}
时间复杂度:。最坏情况下字符串只有一个单词。
空间复杂度:。没有开辟新的空间。