当前位置: 首页 > news >正文

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.lryc.cn/news/159355.html

相关文章:

  • Electron 两个线程
  • 基于YOLOv8和WiderFace数据集的人脸目标检测系统(PyTorch+Pyside6+YOLOv8模型)
  • 《消息队列》专栏介绍
  • 各类工具使用详情【持续更新】
  • docker容器的安装和基础练习
  • WordPress 后台密码忘记后,重置找回密码的 N 种方法
  • 将PyCharm中的终端运行前面的PS修改成当前环境
  • Linux系统编程—socket网络编程
  • 函数指针
  • Linux——进程间信号(超级详解!!)
  • C++ STL库的介绍和使用
  • Excel数学、工程和科学计算插件:FORMULADESK Studio
  • 大规模 Spring Cloud 微服务无损上下线探索与实践
  • 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
  • C++设计模式_03_模板方法Template Method
  • 【LeetCode-中等题】79. 单词搜索
  • 揭秘iPhone 15 Pro Max:苹果如何战胜三星
  • 分布式秒杀方案--java
  • 高频golang面试题:简单聊聊内存逃逸?
  • 【2023年数学建模国赛C题解题思路】
  • Jenkins+Allure+Pytest的持续集成
  • yo!这里是进程控制
  • 多线程快速入门
  • Redis 7 第七讲 哨兵模式(sentinal)架构篇
  • laravel框架系列(一),Dcat Admin 安装
  • Linux:工具(vim,gcc/g++,make/Makefile,yum,git,gdb)
  • 小节1:Python字符串打印
  • 2023国赛C题解题思路代码及图表:蔬菜类商品的自动定价与补货决策
  • 数据可视化工具中的显眼包:奥威BI自带方案上阵
  • LeetCode算法心得——生成特殊数字的最少操作(贪心找规律)