题解1:
解法具体步骤如下:
- 使用
split方法将给定字符串按照空格分割成数组 - 使用
filter方法将数组中的空字符串过滤掉 - 使用
pop方法取出数组中最后一个元素(即最后一个单词) - 使用
length属性获取最后一个单词的长度
var lengthOfLastWord = function(s) {
return s.split(' ').filter(i=>i).pop().length
};
该函数的时间复杂度为 O(n),其中 n 是给定字符串的长度。该函数的实现比较简洁,但需要对数组进行两次操作,因此在性能上可能不如一些其他实现方法。
题解2:
解法具体步骤如下:
- 使用
trim()方法去除字符串的前导和尾随空格。 - 使用
split(' ')方法将字符串分割成单词数组。 - 使用
pop()方法获取数组的最后一个元素,即最后一个单词。 - 使用
length属性返回最后一个单词的长度。
var lengthOfLastWord = function(s) {
return s.trim().split(' ').pop().length
};
这个函数的时间复杂度为O(n),其中n是字符串的长度。
题解3:s = " fly me to the moon "
这个解法简单易懂,代码实现也比较简单。在实际应用中,我们可以根据这个思路,将字符串按照需要的方式拆分成数组,然后对数组进行操作,得到我们需要的结果。
解法具体步骤如下:
- 首先使用
trim()方法去除字符串首尾的空格,得到"fly me to the moon"。 - 然后使用
split()方法将字符串按照空格分割成数组,得到['fly', 'me', '', '', 'to', '', '', 'the', 'moon']。这里注意,由于字符串中有多个连续的空格,因此得到的数组中会出现空字符串。 - 最后,直接取得数组的最后一项,并使用
length属性得到最后一个单词的长度,即5。
var lengthOfLastWord = function(s) {
let arr = s.trim().split(' ')
return arr[arr.length-1].length
};
题解4:s = " Hello World "
解法具体步骤如下:
- 去除字符串首尾空格,例如将字符串 " Hello World " 转换为 "Hello World"
- 将字符串转换为字符数组,例如将 "Hello World" 转换为 ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
- 反转字符数组,例如将 ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'] 反转为 ['d', 'l', 'r', 'o', 'W', ' ', 'o', 'l', 'l', 'e', 'H']
- 找到字符数组中第一个空格的位置,例如在 ['d', 'l', 'r', 'o', 'W', ' ', 'o', 'l', 'l', 'e', 'H'] 中找到第一个空格,其位置为 5。
结论1:如果字符串中没有空格,那么字符串的长度就是最后一个单词的长度。
结论2:如果字符串中有空格,那么最后一个单词的长度就是字符串中最后一个空格后面的字符数。
var lengthOfLastWord = function(s) {
let arr = Array.from(s.trim()).reverse()
let firstSpace = arr.findIndex(word=>word === ' ')
if(firstSpace === -1) return arr.length
return firstSpace
};