【刷题第 12 天】58. 最后一个单词的长度
一、题目描述:
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
复制代码
示例 2:
复制代码
二、思路分析:
这个题目并不难,只要找出最后一个单词即可。
这里我提供两种方法:
反向遍历
由于我们不确定字符串最后是否为空字符,因此我们首先需要找到最后一个字母,说明该字母即为最后一个单词的最后一个字母。
因此我们从最后一个字母开始反向遍历,当遍历到非空格字符或者字符串起始位置。在这个过程中,遍历到的每个元素都算是最后一个单词的范畴,因此我们边遍历边递增数量,遍历完毕后返回长度即可。
我们来模拟一下流程: "Hello World "
我们首先从字符串最末尾开始遍历,最后字符为空格,继续寻找
寻找到第一个最末尾字符 d ,开始计数
继续向前遍历,到 W 字符,此时字符串长度为 5
继续向前遍历,遍历到空格,遍历结束
输出长度 5
时间复杂度: O(n),n 为字符串的长度,算法需要反向遍历字符串,因此复杂度为 O(n)空间复杂度: O(1),只声明几个变量,声明了常数空间
字符串大法好
反向遍历看着很爽,其实距离真正的爽还是有大大的差距,我们可以直接借助 JavaScript 字符串提供的方法实现。
trim 方法返回删除两头空格后的字符串
split 以空格分割将字符串拆成多个单词
at 复制直接遍历数组最后一个元素
.length 属性,求出单词长度
复制代码
三、AC 代码:
复制代码
四、总结:
双指针 yyds,做好双指针,简单题直接 AC,舒服啊,今天又是一次过
版权声明: 本文为 InfoQ 作者【白日梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/9186029a93eb3b8f5c4a4a8e7】。文章转载请联系作者。
评论