Skip to content

58. 最后一个单词的长度

解题过程

INFO

题目链接 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串

javascript
/**
 * @link https://leetcode.cn/problems/length-of-last-word/
 * @title 58. 最后一个单词的长度
 * @description 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
 * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串
 * @param {string} s
 * @return {number}
 */
// 解法一
// 思路:正则表达式匹配空格字符拆分数组形式,然后输出最后一位单词长度
var lengthOfLastWord = function (s) {
  const strArr = [ ...s.match(/\S+/g)]
  return strArr[strArr.length - 1].length
}

// 解法二
// 思路:去除字符串收尾空格,累增计算最后一个连续字符长度即可
var lengthOfLastWord = function (s) {
  let len = 0
  const newStr = s.trim()

  for (let i = 0; i < newStr.length; i++) {
    if (newStr[i] !== ' ') {
      len++
    } else {
      len = 0
    }
  }

  return len
}

// 解法三
// 思路:去除字符串收尾空格,字符长度减去最后一个出现空格位置的字符位置
var lengthOfLastWord = function (s) {
  return s.trim().length - s.trim().lastIndexOf(' ') - 1
}

// const result = lengthOfLastWord('Hello World') // 5
// const result = lengthOfLastWord('   fly me   to   the moon  ') // 4
const result = lengthOfLastWord('luffy is still joyboy') // 6
console.log(result)

解题感受

相对很好写这一题,解题思路也会比较多,蛮愉快的,基本使用字符串 API、正则、循环遍历三种方式不同解法执行效果差不多

参考题解