js - leetcode- 最后一个单词的长度

188 阅读1分钟

这是我参与2022首次更文挑战的第13天,活动详情查看:2022首次更文挑战

祝大家新春快乐

前言

有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来,由此可见,leetcode的题还是有分量的。今天我们就来会会它们

题目描述

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1:

输入:s = "Hello World"
输出:5

示例 2:

输入:s = "   fly me   to   the moon  "
输出:4

示例 3:

输入:s = "luffy is still joyboy"
输出:6

提示:

1 <= s.length <= 104
s 仅有英文字母和空格 ' ' 组成
s 中至少存在一个单词

数组切割

思路

  • 首先,我们通过空格把字符串切割成一个个的数组
  • 然后倒序排序判断当前项的长度
  • 如果长度为空,直接返回长度即可
  • 否则进入下一次循环

解法一

 const arrs = s.split(' ')
    let lth = 0
    let arrLth = arrs.length-1
    while(lth === 0) {
        lth = arrs[arrLth].length
        arrLth--
    }
    return lth

解法二

var lengthOfLastWord = function(s) {
    const arrs = s.split(' ')
    for(let i= arrs.length-1; i>=0; i--) {
        const lth = arrs[i].length
        if(lth) return lth
    }
};

反向遍历

思路

  • 反向遍历字符串
  • 由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。
  • 从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度

解法

var lengthOfLastWord = function (s) {
    let sLth = s.length - 1
    let resLth = 0
    while (s[sLth] === ' ') {
        sLth--
    }
    while (sLth >= 0 && s[sLth] !== ' ') {
        sLth--
        resLth++
    }
    return resLth
};

写在最后

  • 希望你能收获满满