力扣:最后一个单词的长度(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

示例 1:

输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5。
示例 2:

输入:s = "   fly me   to   the moon  "
输出:4
解释:最后一个单词是“moon”,长度为4。
示例 3:

输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为6的“joyboy”。

代码实现:

int lengthOfLastWord(char* str)
{
	char* ptr[1000] = { 0 };
	int i = 0;
	while (*str)//遍历整个字符串
	{
		if (isalpha(*str))//遇到一个单词的首字母
		{
			ptr[i++] = str;//存储一个单词的起始地址
			while (isalpha(*str))
			{
				str++;
			}
		}

		if (*str != '\0')
		{
			*str = '\0';//分割出一个完整的单词
			str++;//指向下一个单词的首字母
		}
	}
	i -= 1;
	int len = strlen(ptr[i]);
	return len;
}

大致思路:

1 分割出字符串中的所有单词

2 找到最后一个单词,strlen函数求出它的长度

代码解读:

char* ptr[1000] = { 0 };//存放每个单词的起始地址

分割每个单词并存储到ptr数组中: 

    while (*str)//遍历整个字符串
	{
		if (isalpha(*str))//遇到一个单词的首字母
		{
			ptr[i++] = str;//存储一个单词的起始地址
			while (isalpha(*str))
			{
				str++;//走完一个单词
			}
		}

		if (*str != '\0')//找到非最后一个单词后面的那个空格,改成\0
		{
			*str = '\0';//分割出一个完整的单词
			str++;//指向下一个单词的首字母
		}
	}

注意:最后一个单词不需要将它后面的元素改成\0,因为后面的那个本身就是\0

           当str走到字符串的结束标志\0时不需要++,因为已经遍历完了

分割

luffy is still joyboy:

分割 

   fly me   to   the moon  

求最后一个单词长度:

    i -= 1;
	int len = strlen(ptr[i]);

由于i++是后置++,当最后一个单词的起始位置存储到ptr数组中后,i还会++

所以i-1,就是ptr数组中最后一个元素的下标,又ptr数组中存储的都是每个单词的起始地址,只要有了起始地址,就能找到完整的单词

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot实现留守儿童爱心网站平台【源码+论文】

基于springboot实现留守儿童爱心网站演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&…

qt 关于QtXlsx的编译 使用

版本:qt 5.14.0 qt creator4.11.0 平时用mingw编译器 QtXlsx源码下载地址:QtXlsxWriter:https://github.com/dbzhang800/QtXlsxWriter 在Qt的XLSX模块提供了一组类来读写Excel文件。它不需要 Microsoft Excel,可以…

EM7电磁铁的技术参数

电磁铁可以通过更换电磁铁极头在一定范围内改善磁场的大小和磁场的均匀度 ,并且可以通过调整极头间距改变磁场的大小。主要用于磁滞现象研究、磁化系数测量、霍尔效应研究、磁光实验、磁场退火、核磁共振、电子顺磁共振、生物学研究、磁性测量、磁性材料取向、磁性产…

期货黄金交易平台重要吗?有哪些显著的期货黄金交易平台优势?

黄金交易平台就是可以在其上面做黄金买卖交易的系统,是一种依靠行业应用软件而搭建的平台,里面会包含一些交易指标、趋势图表、K线。市场上的黄金交易平台很多,只有正规的期货黄金交易平台才值得信任。主要还是因为期货黄金交易平台优势所决定…

【五】线程安全VS线程不安全

1. Java内存模型的特征 Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来建立。下面逐个看下哪些操作实现这三个特性: 1.1 原子性(Atomicity) 由Java内存模型来直接保证的原子性变量操作包括 read、load、assig…

【机器学习】线性回归

文章目录前言一、单变量线性回归1.导入必要的库2.读取数据3.绘制散点图4.划分数据5.定义模型函数6.定义损失函数7.求权重向量w7.1 梯度下降函数7.2 最小二乘法8.训练模型9.绘制预测曲线10.试试正则化11.绘制预测曲线12.试试sklearn库二、多变量线性回归1.导入库2.读取数据3.划分…

Linux--抓包-连接状态

目录 一、TCP: 1.抓包: 2.工具: 3.状态: 4.命令: 三次握手: 应答确认: 四次挥手 一、TCP: 面向连接、可靠的、流式服务 1.抓包: 三次握手、四次挥手 2.工具&…

数据库:Redis数据库

目录 一、数据库类型 1、关系型数据库 2、非关系型数据库 3、关系型非关系型区别 二、Redis数据库 1、什么是Redis 3、Redis特点 4、Redis为什么读写快 5、部署Redis数据库 6、redis管理 7、Redis数据库五大类型 8、Redis数据库基础使用 9、redis五大类型增删查 …

数据库管理-第六十三期 烦(20230327)

数据库管理 2023-03-27第六十三期 烦1 跨版本PDB迁移补遗2 BUGs3 就低不就高总结第六十三期 烦 上个周末呢,因为一些客户的事情整的一个周末都在干活,其中两天还搞到的晚上12点,几乎没咋休息,现在感觉贼累,继续写文章…

为什么我们认为GPT是一个技术爆炸

从23年初,ChatGPT火遍全球,通过其高拟人化的回答模式,大幅提升了人机对话的体验和效率,让用户拥有了一个拥有海量知识的虚拟助手,根据UBS发布的研究报告显示,ChatGPT在1月份的月活跃用户数已达1亿&#xff…

Java实习生------Redis哨兵机制详解⭐⭐⭐

“无数的我们被世界碾压成一缩黑团,无数的我们试图与世界抗争到底”🌹 参考资料:图解redis 目录 什么是哨兵机制? 哨兵机制主要干了哪三件事? 哨兵监控主节点的过程是怎样的? 判断主节点故障之后&…

Servlet---服务端小应用程序(服务器端的小组件)

零.前置知识 1.tomcat—服务器容器 tomcat就是一个服务器容器,通常说的将项目部署到服务器,就是将项目部署到tomcat中(将项目放到tomcat容器中)。 浏览器向服务器发送一个HTTP请求,请求访问demo09.html页面&#xf…

【Linux】进程相关笔记

文章目录查看进程方式批量化注释fork进程状态R状态S状态D状态T状态t状态退出码问题X&&Z状态僵尸进程的危害makefile 新知识孤儿进程查看进程方式 ls /proc ls /proc/13045 (可以查看到之情进程的属性) ps axj | head -1 && ps ajx | grep myprocess(文件名) |…

垃圾回收之CMS、G1、ZGC对比

ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms;停顿时间不会随着堆的大小,或者活跃对象的大小而增加;支持8MB~4TB级别的堆&#x…

【C++】string类的模拟实现

目录 一、前言 二、模拟实现 1、构造函数 2、拷贝构造函数 3、operator 4、operator[] 5、迭代器 6、string类的比较 7、string类的扩容 7.1、reserve 7.2、resize 8、string类的尾插 8.1、push_back 与 append 8.2、operator 9、string类的insert 9.1、插入字符…

deepin15.11无法正常输入汉字问题的解决

1,起因 本来是sougou输入法 但是由于自己突发奇想 在那瞎折腾 一不小心把配置给弄坏了 就再也回不到之前可以正常打印汉字的状态 历经两个小时的折腾 总算是又能输入汉字啦 耗费两个多小时 对当下的我来说时间成本着实有点高 但是把问题给解决了 总算还是有点收获 平时的学习过…

注意力机制 | CNN-BiLSTM-Attention基于卷积-双向长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)

注意力机制 | CNN-BiLSTM-Attention基于卷积-双向长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序) 目录 注意力机制 | CNN-BiLSTM-Attention基于卷积-双向长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)预测结果评价指标基本介绍程序设计参…

qt 编译器 调试器

电脑版本:win10 64位 qt版本:based on Qt 5.14.0(msvc 2017, 32位) Qt Creator 4.11.0 qt安装包:qt-opensource-windows-x86-5.9.9.exe 安装过程一路next,安装完成后,默认使用的…

Spring IoC循环依赖问题

什么是循环依赖 循环依赖其实就是循环引⽤,也就是两个或者两个以上的 Bean 互相持有对⽅,最终形成闭环。⽐如A依赖于B,B依赖于C,C⼜依赖于A。 注意,这⾥不是函数的循环调⽤,是对象的相互依赖关系。循环调…

一个服务端同学的Vue框架入门及实践

做为服务端同学,接触前端代码较少,刚毕业的时候用过 jQuery Bootstrap2/3,当时的感觉就是,容易上手,学习门槛相对较低,另外就是有一个非常成熟的 jQuery 插件库,在这里,几乎可以找到…