LeetCode 58. 最后一个单词的长度

114 阅读2分钟

题解1:

解法具体步骤如下:

  1. 使用 split 方法将给定字符串按照空格分割成数组
  2. 使用 filter 方法将数组中的空字符串过滤掉
  3. 使用 pop 方法取出数组中最后一个元素(即最后一个单词)
  4. 使用 length 属性获取最后一个单词的长度
var lengthOfLastWord = function(s) {
	return s.split(' ').filter(i=>i).pop().length
};

该函数的时间复杂度为 O(n),其中 n 是给定字符串的长度。该函数的实现比较简洁,但需要对数组进行两次操作,因此在性能上可能不如一些其他实现方法。

题解2:

解法具体步骤如下:

  1. 使用trim()方法去除字符串的前导和尾随空格。
  2. 使用split(' ')方法将字符串分割成单词数组。
  3. 使用pop()方法获取数组的最后一个元素,即最后一个单词。
  4. 使用length属性返回最后一个单词的长度。
var lengthOfLastWord = function(s) {
	return s.trim().split(' ').pop().length
};

这个函数的时间复杂度为O(n),其中n是字符串的长度。

题解3:s = " fly me to the moon "

这个解法简单易懂,代码实现也比较简单。在实际应用中,我们可以根据这个思路,将字符串按照需要的方式拆分成数组,然后对数组进行操作,得到我们需要的结果。

解法具体步骤如下:

  1. 首先使用 trim() 方法去除字符串首尾的空格,得到 "fly me to the moon"
  2. 然后使用 split() 方法将字符串按照空格分割成数组,得到 ['fly', 'me', '', '', 'to', '', '', 'the', 'moon']。这里注意,由于字符串中有多个连续的空格,因此得到的数组中会出现空字符串。
  3. 最后,直接取得数组的最后一项,并使用 length 属性得到最后一个单词的长度,即 5
var lengthOfLastWord = function(s) {
 
    let arr = s.trim().split(' ')
    return arr[arr.length-1].length
};

题解4:s = " Hello World "

解法具体步骤如下:

  1. 去除字符串首尾空格,例如将字符串 " Hello World " 转换为 "Hello World"
  2. 将字符串转换为字符数组,例如将 "Hello World" 转换为 ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
  3. 反转字符数组,例如将 ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'] 反转为 ['d', 'l', 'r', 'o', 'W', ' ', 'o', 'l', 'l', 'e', 'H']
  4. 找到字符数组中第一个空格的位置,例如在 ['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 
};