本文主要是介绍nowCode HJ1 字符串最后一个单词的长度 简单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目 - 点击直达
- 1. HJ1 字符串最后一个单词的长度 简单
- 1. 题目详情
- 1. 原题链接
- 2. 题目要求
- 3. 基础框架
- 2. 解题思路
- 1. 思路分析
- 2. 时间复杂度
- 3. 代码实现
1. HJ1 字符串最后一个单词的长度 简单
1. 题目详情
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
1. 原题链接
nowCode HJ1 字符串最后一个单词的长度 简单
2. 题目要求
示例
输入:
h e l l o n o w c o d e r hello nowcoder hellonowcoder
复制
输出:
8 8 8
说明:
最后一个单词为 n o w c o d e r nowcoder nowcoder,长度为 8 8 8
3. 基础框架
● Cpp代码框架
#include <iostream>
using namespace std;int main() {return 0;
}
// 64 位输出请用 printf("%lld")
2. 解题思路
1. 思路分析
( 1 ) (1) (1) 从输入流 c i n cin cin读取内容,因为空格字符也要被读取,所以不能使用 s c a n f scanf scanf和 > > >> >>运算符重载函数,二者均把空格和换行符作为读取结束的标志,需要使用 g e t l i n e getline getline函数;
( 2 ) (2) (2) 单词之间以空格分隔,要找到最后一个单词,直接倒着找第一个空格字符的位置 p o s pos pos, p o s pos pos的下一个位置就是最后一个单词的起始位置,单词长度就是 s . s i z e ( ) − p o s − 1 s.size()-pos-1 s.size()−pos−1,注意下标相减时的边界是否考虑;
( 3 ) (3) (3) 找不到空格时 g e t l i n e getline getline函数返回 s t d : : s t r i n g : : n p o s std::string::npos std::string::npos,值一般是size_t
的-1
,说明没有单词或只有一个单词,依然满足 s . s i z e ( ) − p o s − 1 s.size()-pos-1 s.size()−pos−1;
2. 时间复杂度
O ( N ) O(N) O(N)
3. 代码实现
#include <iostream>
#include <string>
using namespace std;int main() {string s;getline(cin, s);size_t pos = s.rfind(' ');cout << s.size() - pos - 1 << endl;return 0;
}
这篇关于nowCode HJ1 字符串最后一个单词的长度 简单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!