牛客网:HJ1 字符串最后一个单词的长度

news2024/11/24 20:14:56

在这里插入图片描述

在这里插入图片描述

题目部分:

在这里插入图片描述

解题思路:

方案一:

对于本题,看似简单,其实有坑。

在这里插入图片描述

就是在获取单词这块,不能直接用cin这样子操作,否则不能获取到完整的单词,因为cin这样的读到空格就不会往后续读了,很明显若存在多个单词的话就不行了。

在这里插入图片描述

但是你可以借助cin.get()类似这样方式的获取。然而还有一个更加简单的方法就是使用string类中提供的方法getline接口获取完整的单词。

在这里插入图片描述

解决了获取完整单词这个麻烦剩下的问题就不是事,简单至极。

题目要求是获取字符串最后一个单词的长度,很明显这题如同我前面所说那般会分为两种情况讨论,分别是多个单词和单个单词的情况。根据题目的分析,两者之间最显著的区别就是中间是否会存在空格间隔。把握住这个关键点我们就可以大做文章了。

在这里插入图片描述

具体而言就是先简单判断是否是单个单词的情况,因为相对于多个单词的情况,单个单词求长度会非常简单,直接调用string中的size/length方法就可以直接计算出长度进行输出了。

当排除是单个单词的情况时,剩下就只能是多个单词的情况了,对于多个单词,我们可以通过string类中提供的接口方法rfind,反方向寻找出空格,那么就可以确定最后一个单词的具体所在位置,就可以计算出及其长度了。

接下来以示例1为例进行演示讲解:

在这里插入图片描述

附:示例1计算最后一个单词长度的图解:

在这里插入图片描述

这张图通过示例1来将其分析,示例1的字符串总长度一眼就能看出来是14,hello(5个字母)+ 空格(1个空格隔开) + newcoder(8个字符)组合的字符串,我们通过string类中的rfind方法找到最后一个单词前的空格位置,确定了最后一个单词的位置。那么接下来计算出最后一个单词的长度就是轻轻松松的事情。但是这里有个坑,就是数组的下标是从0开始的,所以rfind找到空格对应位置的数组下标是5而不是6,所以计算长度时要额外减去1,这个千万不要忘记了,否则就掉坑了。

在这里插入图片描述

我觉得通过上面我详细地阐述讲解已经能很明显陈述了我对于单个单词和多个单词两种情况下具体代码实现逻辑了,要是还有xd不能理解的话,那么为师真的已经尽力了。

在这里插入图片描述

在这里插入图片描述

方案一演示代码讲解如下:

在这里插入图片描述

附:方案一源码提取:

#include <iostream>
#include <string>

using namespace std;

int main()
{
	string s; // 定义字符串
	getline(cin, s); // 获取字符串

	// 一般情况下,当不是只有单个单词时,存在多个单词时
	// 我们逆方向找,遇到空格代表这就是最后一个单词
	size_t pos = s.rfind(' ');

	// 判断是否存在空格情况,若没有说明只有一个单词
	if (pos == string::npos)
	{
		// 只有一个单词时直接返回单词长度即可
		cout << s.size() << endl; 
	}
	else
	{
		// 若是存在多个单词时
		// 要切记我们拿到的是最后一个单词前空格的前一个位置
		cout << s.size() - pos - 1 << endl;
	}

	return 0;
}

测试结果:

方案一:

在这里插入图片描述

不出意外的话家人们肯定是狠狠拿下!

在这里插入图片描述

备注:

楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢家人们一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm,若有编程学习方面的问题可以私信我一同探讨(我尽力帮),毕竟“众人拾柴火焰高”,大家一起交流学习,共同进步!

在这里插入图片描述

2023年4月11日

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

elsticsearch与关系数据库的区别

查看所有索引&#xff08;表&#xff09; 向索引&#xff08;表&#xff09;中添加数据&#xff1a; 自定义id添加数据&#xff1a; 自定义id添加数据&#xff1a;方式二

Android12之网络共存

一.思路 所谓共存就是让两个网络同时使用,如果想让哪个网络作为外网,则该网络优先级要高于内网的网络,即可达到外网用来上网的需求,那么要想共存,就必须到从低优先级网络切换到优先级高的网络时,不要做断开操作,即可达到,两个网络同时存在的需求,做到以上两点,我们便…

MiniGPT4,开源了

简介 MiniGPT-4 旨在将来自预训练视觉编码器的视觉信息与先进的大型语言模型 (LLM) 对齐。 具体来说&#xff0c;在文本方面&#xff0c;作者利用 Vicuna 作为语言解码器&#xff0c;在视觉感知方面&#xff0c;使用了与BLIP-2相同的视觉编码器&#xff0c;并且语言和视觉模型…

数据结构(C语言实现)——二叉树的概念及二叉树顺序结构和链式结构的实现(堆排序+TOP-K问题+链式二叉树相关操作)

文章目录1. 前言2. 树的概念及结构2.1 树的概念2.2 树的相关概念2.3 树的表示3. 二叉树的概念3.1 特殊二叉树3.2 二叉树的性质4. 二叉树的顺序存储4.1 堆的概念4.2 堆的实现4.2.1 堆的结点定义4.2.2 堆的打印和销毁4.2.3 堆的插入4.2.4 堆的删除4.2.5 取堆顶数据4.2.6 堆的判空…

【Python学习笔记】cs231nPython Numpy教程

【Python学习笔记】cs231nPython Numpy教程 回顾经典教程cs231n&#xff0c;完成assignments觉得很困难&#xff0c;感觉自己python基础语法掌握的不是很熟&#xff0c;就顺藤摸瓜找了cs231n他们的官方Python个Numpy教程 如果对英文原版上手有困难&#xff0c;可以看这个&…

智慧园区水电监测系统

随着人们对环保意识的提高&#xff0c;智慧园区的建设也越来越受到关注。其中&#xff0c;水电监测系统是智慧园区的一个重要组成部分。本文将从以下几个方面介绍智慧园区水电监测系统的特点和优势。 一、智慧园区水电监测系统的特点 1.实时监测&#xff1a;智慧园区水电监测系…

某医院网络故障分析案例

1、背景 某市第一医院用户反馈&#xff0c;近期内部业务系统出现访问慢的情况&#xff0c;这种情况严重影响到用户的体验和工作效率。 针对此问题&#xff0c;我们通过NetInside流量分析系统&#xff0c;提供实时和历史原始流量。重点针对网络异常流量跟踪分析&#xff0c;找…

go数据结构(二叉树的遍历)

用数组来存储二叉树如何遍历的呢&#xff1f; 如果父节点的数组下表是i&#xff0c;那么它的左孩子就是i * 2 1&#xff0c;右孩子就是 i * 2 2。 二叉树的遍历方式&#xff1a; 二叉树有三种基本遍历方式&#xff0c;分别是前序遍历、中序遍历和后序遍历。遍历的原理是从根…

Jenkins 流水线

采用Jenkins的自由风格构建的项目&#xff0c;适合用于测试和学习&#xff0c;主要问题有&#xff1a; 构建过程中整体流程是不可见的&#xff0c;无法确认每个流程花费的时间出现问题不方便快速的定位无法进行版本化管理多个任务中有很多步骤需要重复搭建 Jenkins的Pipeline…

MYSQL Row 752 was cut by GROUP_CONCAT()

因为group_concat有个最大长度的限制&#xff0c;GROUP_CONCAT函数返回的结果大小被MySQL默认限制为1024(字节)的长度。超过最大长度就会被截断掉 解决方法&#xff1a;更改配置文件&#xff0c;修改长度。 https://blog.csdn.net/zzddada/article/details/115082236 concat…

DHCP与RIP配置实验

目录 一、实验要求与拓扑结构 1、实验要求 2、提前规划好网段的拓扑结构如下图 二、实验步骤 1、给每台路由器的各个接口配置ip 2、给路由器AR1和AR3配置dhcp服务 3、在路由器AR1和AR2上运行ripv2&#xff0c;在AR3上运行ripv1 4、更改接口的rip协议版本 一、实验要求与…

chatglm-6b模型在windows的详细安装教程

1.先是看了github的文章&#xff08;如果打不开这篇文章&#xff0c;可能需要科学上网&#xff0c;即访问外网的VPN&#xff09;&#xff1a; https://github.com/THUDM/ChatGLM-6B 2.准备&#xff1a;台式机&#xff0c;GPU是8G。&#xff08;关于是否可以在笔记本运行&#x…

【网路】-- HTTP协议

目录 HTTP协议 认识URL urlencode和urldecode Http http的宏观结构 http请求报文格式 http响应报文格式 HTTP的方法 表单 重定向 HTTP常见Header 会话管理 Cookie 实验证明 Connection选项 工具推荐 Fiddler 原理 应用层&#xff1a;就是程序员基于socket接口…

如何在大厂做好架构演进?

1 架构演进的定义 1.1 定义 通过设计新的系统架构(4R)&#xff0c;来应对业务和技术的发展变化。 1.2 关键点 新架构新的复杂度 1.3 目的 应对业务和技术的发展变化后带来新的复杂度。 案例 淘宝去IOE&#xff0c;是因为业务发展大了后&#xff0c;IOE的成本和可控性难…

51单片机入门

文章目录 一、安装keil5及proteus二、MCS-51单片机结构与原理(一).8051单片机基本组成(二).8051单片机引脚1.电源引脚2.时钟电路引脚3.控制信号引脚4.输入/输出端口 (三) 并行输入/输出端口结构 三、单片机cx51编程基础(一).变量定义(二).数据类型(三).存储类型(四).Cx51语言程…

【Python】逆向解析js代码

目录 1. 打开百度翻译网页&#xff0c;查找翻译结果的网络资源包 2. 获取翻译结果网络资源包的url、请求头、请求体&#xff0c;解析json文件数据 3. 观察请求体字段&#xff0c;发现 query 字段便是我们输入的需要翻译的值 4. ctrl F 快捷键搜索sign值的网络资源包&#x…

自然语言处理:词嵌入简介

动动发财的小手&#xff0c;点个赞吧&#xff01; Word Embeddings 机器学习模型“查看”数据的方式与我们&#xff08;人类&#xff09;的方式不同。例如&#xff0c;我们可以轻松理解“我看到一只猫”这一文本&#xff0c;但我们的模型却不能——它们需要特征向量。此类向量或…

MongoDB 聚合管道的集合关联($lookup)及合并($unionWith)

目前为止&#xff0c;我们已经介绍了一部分聚合管道中的管道参数&#xff1a; $match&#xff1a;文档过滤 $group&#xff1a;文档分组&#xff0c;并介绍了分组中的常用操作&#xff1a;$addToSet&#xff0c;$avg&#xff0c;$sum&#xff0c;$min&#xff0c;$max等。 $add…

python OCR识别验证码

1. 抓取网页验证码图像并保存 import lxml.html, urllib3# 使用urllib3抓取网页数据 http urllib3.PoolManager() html http.request(GET,site).data# 使用lxml解析网页数据 tree lxml.html.fromstring(html) # 解析HTML&#xff0c;补全不完整的格式 fixedhtml lxml.ht…

LeetCode:102. 二叉树的层序遍历

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 可以参考&#x1f449;LeetCode&#xff1a;二叉树的前、中、后序遍历——如何创建一棵【二…