Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
题目
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/le… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
示例 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”。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
思路分析
思路1
- 首先去除字符的前后空格 trim()
- 然后对中间的字符开始以空格切割
- 拿到切割数组,并获取长度
- 拿长度减1,拿数组的最后一个字符串
- 把字符串切割,获取长度
思路2
- 首先去除字符的前后空格 trim(),这里其实不需要去除前边的空格,我们换为trimEnd()
思路3
反向遍历
- 首先还是去除字符的前后空格
- 因为我们是通过下标拿值的,所以就是字符长度-1
- 拿到长度后,开始去除字符前后的空格长度,
- 现在开始从最后开始比较,一个计数器,
- 开始从后边循环,如果当前值大于0,且当前值不等于空,计数器叠加,不满足条件时返回值
代码
代码1
let lengthOfLastWord = function(s) {
/**
* 首先去除字符的前后空格 trim()
* 然后对中间的字符开始以空格切割
* 拿到切割数组,并获取长度
* 拿长度减1,拿数组的最后一个字符串
* 把字符串切割,获取长度
*
* */
let arr = s.trim().split(' ')
let lastIndex = arr.length - 1
return arr[lastIndex].split('').length
}
复制代码
代码2
let arr = s.trimEnd().split(' ')
复制代码
代码3
/**
* 首先还是去除字符的前后空格
* 因为我们是通过下标拿值的,所以就是字符长度-1
* 拿到长度后,开始去除字符前后的空格长度,
* 现在开始从最后开始比较,一个计数器,
* 开始从后边循环,如果当前值大于0,且当前值不等于空,计数器叠加,不满足条件时返回值
* */
let index = s.length - 1
console.log(index)
while (s[index] === ' ') {
console.log(index)
index--
}
let wordLength = 0
while (index >= 0 && s[index] !== ' ') {
wordLength++
index--
}
return wordLength
复制代码