leetcode:58. 最后一个单词的长度

题目:

函数原型:

int lengthOfLastWord(char * s)

解析:

求最后一个单词的长度,我们有两种思路

第一种思路:

逆向求,先设置一个字符串下标index,定位到最后一个单词的最后一个字符。再一个设置长度变量n,从后向前遍历,直到遇到“空格”或者下标index小于0停止遍历,每次前移n++,最后返回长度变量n

关键1:如何定位到最后一个单词的最后一个字符?

定位到最后一个单词的最后一个字符,即定位到字符串中最后一个非空格字符。我们可以通过求字符串长度,先定位到字符串的最后一个字符。如果该字符是空格,那么下标index前移,直到遇到非空格字符。这样我们就可以定位到最后一个单词的最后一个字符

关键2:最后一个单词长度,即变量n如何求?

当我们定位到最后一个单词的最后一个字符时,只要继续前移直到遇到空格字符或者下标小于0,前移的次数就是变量n的值,即最后一个单词的长度

关键3:为什么关键2中前移停止条件包含下标小于0呢?

因为如果字符串中只有一个单词,第一个单词就是最后一个单词,那么前移永远无法遇到空格字符,就会变为死循环,要想停下来下标index必须大于0

int lengthOfLastWord(char * s){
//定位到最后一个单词的最后一个字符
int size = strlen(s);
int index = size - 1;
while (s[index] == ' ')
{index--;
}//设置长度变量n
int n = 0;
while (index >= 0 && s[index] != ' ')
{index--;n++;
}return n;
}

 第二种思路:

正向求,先设置好字符串下标index和长度变量n,初始值都为0。 从前向后遍历,直到遍历完最后一个字符。每次遇到非空格字符,要判断一下当前字符的前一个字符是否为空格字符(判断条件还要加上index下标大于0),如果是,则说明此时正在遍历的是一个新的单词,前面的已经遍历的一定不是最后一个单词,长度变量n要重置为0。如果不是,长度变量n++。最后返回n。

 

关键1:为什么判断前一个字符是否为空格字符时需要加上index>0

因为当判断第一个字符的前一个字符是否为空格字符时,s [ index - 1]会越界,s[ -1 ]不存在

int lengthOfLastWord(char* s)
{int n = 0;int index = 0;while (s[index] != '\0')//从前向后遍历字符串{if (s[index] != ' '){if (index > 0 && s[index - 1] == ' ')//判断前一个字符是否为空格字符{n = 0;//新单词,重置长度变量}n++;}index++;}return n;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL——连接查询与子查询

一、连接查询 单表查询:在一张表当中查询数据,叫做单表查询。 连接查询,结合俩(多)张表,在俩张(多)表当中查询数据,在一张表当中查询一部分,在另一张表当中…

UE4/UE5 动画控制

工程下载​ ​​​​​​​​​​​​​https://mbd.pub/o/bread/ZJ2cm5pu 蓝图控制sequence播放/倒播动画: 设置开启鼠标指针,开启鼠标事件 在场景中进行过场动画制作 设置控制事件

MySQL的概述、版本、安装过程

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、MySQL的概述 二、MySQL的版本 三、MySQL的下载与安装 前言 本文将来谈谈MySQL的概述,MySQL的版本,以及它…

实相融、云启未来,智慧公厕让城市生活更美好

现代社会,随着科技的不断发展,人们对于城市生活的要求也在不断提升。在这个过程中,智慧公厕作为城市基础设施中的重要组成部分,正在发挥着越来越重要的作用。通过数字化、云管理、人工智能等未来的科技方式,智慧公厕为…

Android lint配置及使用

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、将 lint 配置为不显示警告3.1 在 A…

OpenWrt系统开发笔记

openWrt英文官网: https://openwrt.org/ 中文官网: http://www.openwrt.org.cn/ 一、开发环境及编译 在github上有两个源码使用的比较多   一个是lede,地址为:https://github.com/coolsnowwolf/lede   另一个为OpenWrt的官方源码&#…

【美团3.18校招真题1】

大厂笔试真题网址:https://codefun2000.com/ 塔子哥刷题网站博客:https://blog.codefun2000.com/ 小美剪彩带 提交网址:https://codefun2000.com/p/P1088 题意:找出区间内不超过k种数字子数组的最大长度 使用双指针的方式&…

【JAVA】Object类与抽象类

作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和…

包管理工具--》发布一个自己的npm包

包管理工具系列文章目录 一、包管理工具--》npm的配置及使用(一) 二、包管理工具--》npm的配置及使用(二) 三、包管理工具--》发布一个自己的npm包 四、包管理工具--》yarn的配置及使用 五、包管理工具--》其他包管理器之cnpm…

【PTA】浙软2020年上机题目自测

个人学习记录,代码难免不尽人意。 在PTA买了浙软2020年的保研上机真题时光机做了做,20年的明显要比19年的难一些,我用了差不多2小时多一点做完了,最后得分90分,在当年排名26左右。下面是4道题和我的做法 7-1 Standard…

[MySQL]查看数据库大小

查看库大小 例如:查看当前MySQL中数据总量超过2GB的库: select table_schema as 数据库,table_rows as 记录数,data_size as 数据容量(GB),index_size as 索引容量(MB) from (selecttable_schema,sum(table_rows) as table_rows,sum(truncate(data_leng…

C++毕业设计基于QT实现的超市收银管理系统源代码+数据库

C毕业设计基于QT实现的超市收银管理系统源代码数据库 编译使用 编译完成后,需要拷贝 file目录下的数据库 POP.db文件到可执行程序目录下 登录界面 主界面 会员管理 完整代码下载地址:基于QT实现的超市收银管理系统源代码数据库