题目描述
思路解析动画文字版
想通这点是关键:答案藏在最右边。所以我们让一个指针从最后一个字符出发,一路向左。
记住这两段就够了:先跳空格,再数字母,遇空格即停。下面把字符排成格子,空格用 ␣ 表示,一帧走一格看清楚。
起步 · cur 落在最后一格:指针 cur 落在最右边第 10 格,这里是个空格 ␣。len 还是 0。先看:它是空格吗?
第10格是空格 · 跳过:是空格!这是末尾的多余空格,不属于单词。这格封存变灰,len 不动,准备往左挪。
cur 左移到第9格:cur 移到第 9 格。这里还是空格 ␣——末尾连着两个空格呢。再跳。
第9格也是空格 · 跳过:又是空格,继续封存。两个尾部空格都跳完了,len 仍是 0。往左,看看下一格是不是真正的字母。
cur 左移到第8格:cur 到第 8 格,这是字母 e!跳空格阶段结束,进入数字母阶段。从这一格起,每碰到一个字母 len 就加一。
数到 e · len = 1:数它!e 标绿(算进单词),len 变 1。继续向左,看下一格还是不是字母。
cur 左移到第7格:cur 移到第 7 格,是字母 d。还在单词里,接着数。
数到 d · len = 2:d 也标绿,len 变 2。绿色格子就是「最后一个单词」正在被一个个数出来。
cur 左移到第6格:cur 到第 6 格,字母 o,继续数。
数到 o · len = 3:o 标绿,len 变 3。已经数出 ode 三个字母了。
cur 左移到第5格:cur 到第 5 格,字母 c,还是字母,接着数。
数到 c · len = 4:c 标绿,len 变 4。单词 code 四个字母都数齐了。再往左看一格。
cur 左移到第4格:cur 到第 4 格——这次是空格 ␣!这说明最后一个单词到头了。
遇空格 · 停!:数字母时一旦撞上空格,立刻停——前面的 fb、a 都不管了。绿色 code 就是最后一个单词,长度 4,返回!
下面用 "go cat " 重走流程。一样:先跳尾部那个空格,再从右往左数字母,遇空格停。
例2起步 · cur 落在末格:新串 "go cat " 共 7 格。cur 落在第 6 格,是个空格 ␣。
末格空格 · 跳过:是尾部空格,封存变灰,len 仍 0,往左。
cur 左移到第5格:cur 到第 5 格,字母 t!切到数字母阶段。
数到 t · len = 1:t 标绿,len = 1。
cur 左移到第4格:cur 到第 4 格,字母 a,继续数。
数到 a · len = 2:a 标绿,len = 2。
cur 左移到第3格:cur 到第 3 格,字母 c,接着数。
数到 c · len = 3:c 标绿,len = 3。单词 cat 数齐了,再看左边一格。
cur 左移到第2格:cur 到第 2 格,是空格 ␣——单词到头了。
遇空格 · 停!:遇空格立刻停,前面的 go 不再管。最后一个单词 cat 长度 3,返回!两个例子的套路完全一样。
雷区实演 · 没跳尾部空格就数:假如省掉跳空格那一步,直接在末尾数字母:第 3 格就是空格,程序立刻停、返回 0。可 "hi" 明明长 2——这就是尾部空格必须先跳的原因。
边界三连:先想单字符、末尾空格、中间多空格三种,确认「先跳后数、遇空格停」对每种都对,代码就稳了。
面试追问:把「为什么先跳空格」和「比 split 省在哪」讲清楚,是这题面试的得分点。
参考代码
class Solution: def lengthOfLastWord(self, s): i = len(s) - 1 while i >= 0 and s[i] == ' ': # 阶段1:跳尾部空格 i -= 1 length = 0 while i >= 0 and s[i] != ' ': # 阶段2:数字母,遇空格停 length += 1 i -= 1 return length复杂度
- 时间复杂度:O(n),最坏情况(整串都是一个单词)从右扫到左,每个字符最多看一次 → O(n),n 为字符串长度
- 空间复杂度:O(1),只用了一个下标 i 和一个计数 len,没开额外数组/不切分单词 → 常数空间
易错点
面试追问把动画讲成自己的话
追问为什么要先跳尾部空格?
追问和 split 切单词比有什么优势?
追问字符串全是空格会怎样?
这道题到这就讲完了。动画和文字是同一套思路——别光看,关掉页面自己默写一遍。然后顺着主线继续:
二进制求和
LeetCode 67 · 简单 · 沿着 字符串套路 继续往下推进
把这道题真正学会,再走
图解算法年卡 ¥99 /年
- ✓本题每步动画的吴师兄语音讲解(全站陆续覆盖)
- ✓小欧带 8 步通关训练——追问到不看答案也能写对、能 30 秒讲给面试官听
- ✓学习报告,记录每道题的掌握程度
76k+ GitHub Star · 吴师兄开源图解算法,几十万开发者在看的算法讲解
想成体系刷透这类套路?去图解算法专题