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 
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()pos1,注意下标相减时的边界是否考虑;
( 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()pos1

2. 时间复杂度

O ( N ) O(N) O(N)

3. 代码实现

#include 
#include 
using namespace std;

int main() {
    string s;
    getline(cin, s);
    size_t pos = s.rfind(' ');
    cout << s.size() - pos - 1 << endl;
    return 0;
}

你可能感兴趣的:(牛客网刷题,c++,算法)