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

代码训练LeetCode(29)最后一个单词的长度

代码训练(29)LeetCode之最后一个单词的长度

Author: Once Day Date: 2025年6月11日

漫漫长路,才刚刚开始…

全系列文章可参考专栏: 十年代码训练_Once-Day的博客-CSDN博客

参考文章:

  • 58. 最后一个单词的长度 - 力扣(LeetCode)
  • 力扣 (LeetCode) 全球极客挚爱的技术成长平台

文章目录

      • 代码训练(29)LeetCode之最后一个单词的长度
        • 1. 原题
        • 2. 分析
        • 3. 代码实现
        • 4. 总结

1. 原题

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

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

提示:

  • 1 <= s.length <= 104
  • s 仅有英文字母和空格 ' ' 组成
  • 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”。
2. 分析

题目要求从一个由若干单词组成的字符串中找出最后一个单词的长度。这里的单词是指连续的字母字符序列,单词之间由一个或多个空格分隔。重点在于处理字符串前后以及单词间可能存在的多余空格。

解题思路:

  1. 去除尾部空格:从字符串末尾开始,去除所有空格,确保字符串以最后一个单词结束。
  2. 计算最后一个单词的长度:继续从末尾向前遍历,直到遇到空格或字符串的开头,这样可以得到最后一个单词的长度。

分析步骤:

  • 首先,从字符串末尾开始遍历,忽略掉所有的空白字符。

  • 然后,从第一个非空白字符开始,计数直到再次遇到空白字符或字符串的起始位置。

  • 计数的结果即为最后一个单词的长度。

例如,对于输入 " fly me to the moon "

  • 移除尾部空格后变为 " fly me to the moon"
  • 最后一个单词是 "moon",从后往前数,长度为4。

性能优化关键点:

  • 尽可能减少遍历次数:只需从后向前遍历一次字符串。
  • 避免使用额外的空间:直接在原字符串上操作,不使用额外的存储结构。
3. 代码实现
#include <stdio.h>
#include <string.h>int lengthOfLastWord(const char *s) {int len = strlen(s);int lastWordLength = 0;int i = len - 1;// Skip trailing spaceswhile (i >= 0 && s[i] == ' ') {i--;}// Count the length of the last wordwhile (i >= 0 && s[i] != ' ') {lastWordLength++;i--;}return lastWordLength;
}int main() {char input[] = "   fly me   to   the moon  ";int result = lengthOfLastWord(input);printf("Length of the last word: %d\n", result);return 0;
}
4. 总结

这个问题考察了对字符串操作的基础能力,特别是如何有效地处理和遍历字符串。通过这种类型的问题,可以加深对字符串处理函数如 strlen 的理解,并提升处理边界情况的能力。要进一步提升编程能力,练习更多关于字符串处理的题目是非常有帮助的,同时也可以学习更多关于内存和性能优化的技巧。

相关文章:

  • (LeetCode 动态规划(基础版) )337. 打家劫舍 III (深度优先搜索dfs)
  • [特殊字符] Altair:用Python说话,让数据自己讲故事!!!
  • SpringBoot使用oshi获取服务器相关信息
  • innovus自动绕RDL线
  • GIS数据制备,空间分析与高级建模实践技术应用
  • C++异常处理深度解析:try-catch全方位指南
  • GPT-ArcGIS 在生态评价中的综合应用:多因子权重分析与适宜性制图
  • aardio 类与对象基础
  • 中钧科技三大平台破局企业数字化转型:告别“人肉运维”,拥抱“数据自驱”!
  • Python基础数据类型与运算符全面解析
  • 【WebSocket】WebSocket 多功能集成冲突问题解决方案
  • Charles里怎么进行断点调试
  • 用Python撬动量化交易:深入探索开源利器vnpy
  • 理解系统交互:UML时序图
  • 【Kubernetes】架构与原理:核心概念、组件协同及容器化部署解析
  • 数据库管理与高可用-PostgreSQL日常维护
  • 手机解压 7z 文件全攻略
  • 稳定币的监管
  • Etcd数据持久化机制:WAL与Snapshot解析
  • Springboot中 MyBatis-Flex TableDef 的使用
  • 网站建设平台哪个公司好/创建网站要钱吗
  • 用商标做网站名字/网络营销推广策划书
  • 给网站做备案/seo排名技术教程
  • joomla适合做什么网站/指数
  • 做招聘网站需要哪些手续/真正免费的网站建站
  • 柳州 网站推广/全球网站排名查询