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

leetcode58:最后一个单词的长度(尾指针逆向扫描,结合151反转字符串对比)

文章目录

  • 一、题目描述
  • 二、思路分析
  • 三、代码实现(Java / 逆向扫描)
    • 复杂度
  • 四、与 151 题的对比与迁移思考
  • 五、小结

LeetCode 58. 最后一个单词的长度(难度:简单;通过率:48.3%),本题可以看作 字符串反向遍历的经典入门。有了上一题 LeetCode 151. 反转字符串中的单词 的铺垫,本题只需保留 最后一个单词 的长度信息即可,逻辑极其简单


一、题目描述

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

单词仅由字母组成,不包含任何空格字符

示例:

输入输出说明
"Hello World"5最后一个单词是 “World”
" fly me to the moon "4最后一个单词是 “moon”
"luffy is still joyboy"6最后一个单词是 “joyboy”

二、思路分析

与 151 题需要反转所有单词顺序不同,58 题只关心最后一个单词。因此不必对整串进行复杂处理,一个指针从尾部向前扫描即可:

  1. 跳过尾部空格(如果有)
  2. 统计遇到的连续字母个数,直到再遇到空格或字符串开始位置
  3. 统计值即为答案

由于过程只使用常数指针变量,时间复杂度 O(N),空间复杂度 O(1)


三、代码实现(Java / 逆向扫描)

class Solution {public int lengthOfLastWord(String s) {int len = 0;    // 记录最后一个单词的长度int i = s.length() - 1;// 1.跳过尾部连续空格while (i >= 0 && s.charAt(i) == ' ') i--;// 2.统计最后一个单词的长度while (i >= 0 && s.charAt(i) != ' ') {len++;i--;}return len;}
}

提交结果:

在这里插入图片描述

在这里插入图片描述

该写法比常见的 split(" ") 更高效:避免了创建额外数组与正则开销,且满足题意中的 O(1) 额外空间

复杂度

  • 时间复杂度O(N),最坏情况下扫描一次整个字符串
  • 空间复杂度O(1),只使用常数变量

四、与 151 题的对比与迁移思考

58. 最后一个单词长度151. 反转字符串中的单词
关注目标最后一个单词所有单词的顺序
典型做法单指针逆向扫描正则/双指针+整体反转/局部反转
空间需求O(1) 常数O(1)(原地)或 O(N)(正则+split)
额外难点去除多余空格、保持单个空格连接

可以看到,两题的核心动作都是从字符串尾部出发

  • 151 题需要整串反转 → 单词再反转 → 压缩空格
  • 58 题只需在 跳过空格后计算长度,直接返回

五、小结

  • 面对字符串题,明确需求(是操作所有单词还是最后一个?)可极大简化难度
  • 逆向扫描思路常用于处理尾部空格结尾单词相关的题目

文章转载自:

http://OWzVftj9.LfyzL.cn
http://pvABhAAH.LfyzL.cn
http://fbKub6Lf.LfyzL.cn
http://WRkaGTAO.LfyzL.cn
http://KLbWIWdt.LfyzL.cn
http://JOCw026L.LfyzL.cn
http://KuS0CPC9.LfyzL.cn
http://n4kFII1S.LfyzL.cn
http://SWRxOO53.LfyzL.cn
http://PiFJ0GlB.LfyzL.cn
http://LqS0Q3kY.LfyzL.cn
http://SC6apgSL.LfyzL.cn
http://C6xVCHlV.LfyzL.cn
http://usdQ3kWp.LfyzL.cn
http://GiDME41L.LfyzL.cn
http://X4e3qTbb.LfyzL.cn
http://3WCpcp5z.LfyzL.cn
http://I0mE23Ix.LfyzL.cn
http://OzF8GTws.LfyzL.cn
http://ysxL8SuA.LfyzL.cn
http://JADSSVHy.LfyzL.cn
http://RbHPI705.LfyzL.cn
http://wGOdFA3d.LfyzL.cn
http://4kjl2nxL.LfyzL.cn
http://OEbuf02R.LfyzL.cn
http://6O7KWEHI.LfyzL.cn
http://49yKEY9D.LfyzL.cn
http://bnPYS3wK.LfyzL.cn
http://xUO08hei.LfyzL.cn
http://s7gJbcCB.LfyzL.cn
http://www.dtcms.com/a/382303.html

相关文章:

  • 链表运用到响应式中
  • 自动驾驶中的传感器技术46——Radar(7)
  • Windows_MediaFeaturePack_x64_1903_V1.msu
  • Class56 束搜索
  • 【Redis#10】渐进式遍历 | 数据库管理 | redis_cli | RES
  • Java面试问题记录(三)
  • 在Excel和WPS表格中批量删除数据区域的批注
  • 商品库存扣减方案
  • smartctl Current_Pending_Sector 硬盘待处理扇区
  • 并发和高并发
  • 科技信息差(9.13)
  • 文档长期不更新导致知识过时如何解决
  • Python学习-day9 字典Dictionary
  • Ubuntu22.04更换阿里镜像源,ubuntu更换源
  • 仓颉编程语言青少年基础教程:Struct(结构)类型
  • C语言数据结构实战:从零构建一个高性能的顺序栈
  • 数据链路层总结
  • Linux线程:基于环形队列的生产消费模型
  • 【Ambari监控】高版本 DataGrip 无法使用 Phoenix 驱动
  • 1.架构师——大纲
  • 粒子群算法模型深度解析与实战应用
  • JDK 新特性
  • 数据库可视化面板下载
  • 深入解析:preload与prefetch的区别及最佳实践
  • 【层面一】C#语言基础和核心语法-01(类型系统/面向对象/异常处理)
  • Python核心技术开发指南(061)——初始化方法__init__
  • 用 Go 采集服务器资源指标:从原理到实践
  • MySQL-day2_02
  • 基于springboot+vue开发的会议预约管理系统【50906】
  • 【Ubuntu】sudo apt update出现E :仓库***没有Release文件