vlambda博客
学习文章列表

别人在那看漫画,我在LeetCode刷算法:最后一个单词的长度


不点蓝字,我们哪来故事?



别人在那看漫画,我在LeetCode刷算法:最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。

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

示例 1:

输入:s = "Hello World"
输出:5

示例 2:

输入:s = " "
输出:0

提示:

  • 1 <= s.length <= 10^4

  • s 仅有英文字母和空格 ' ' 组成


解题思路

求最后一个单词的长度,首先想到的应该是将这个字符串从后往前遍历:

  • 首先获取一个”右指针“right = 字符串长度 - 1。

  • 当碰到空格时,right左移(right--)。

  • 设定一个”临时指针“tmp等于right的当前值。

    • 这一步是为了消除字符串的末尾存在多个空格的情况。

  • 当碰到非空格时,tmp左移(tmp--),直到碰到空格。

  • 此时,tmp相当于末尾单词的头部下标,right相当于末尾单词的尾部下标,right - tmp即为单词长度。

public int lengthOfLastWord(String s) { int right = s.length() - 1; if (right < 0) { return 0; } while (right >= 0 && s.charAt(right) == ' ') { right--; } int tmp = right; while (tmp >= 0 && s.charAt(tmp) != ' ') { tmp--; } return right - tmp;}


复杂度分析

  • 时间复杂度:O(n),n 为结尾空格和结尾单词总体长度。


别人在那看漫画,我在LeetCode刷算法:最后一个单词的长度
别人在那看漫画,我在LeetCode刷算法:最后一个单词的长度

Hi

感谢你的到来

我不想错过你

编程那些烦心事

别人在那看漫画,我在LeetCode刷算法:最后一个单词的长度
别人在那看漫画,我在LeetCode刷算法:最后一个单词的长度





精彩推荐




喜欢就点个在看再走吧