58. 最后一个单词的长度

159 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

题目 leetcode.cn/

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

示例

  • 输入: s = "Hello World";输出: 5;
    • 解释: 最后一个单词是“World”,长度为5。
  • 输入: s = " fly me to the moon "; 输出: 4;
    • 解释: 最后一个单词是“moon”,长度为4。
  • 输入: s = "luffy is still joyboy";输出: 6;
    • 解释: 最后一个单词是“joyboy”,长度为6。

提示

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

代码

function lengthOfLastWord(s: string): number {
    let str = s.trim();
    for(let i = str.length - 1; i >= 0; i--){
        if(str[i] === ' '){
            return str.length - 1 - i;
        }
        if(i === 0){
            return str.length;
        }
    }
};
  • 第一种方式
    • 给定的字符串中只包含英文字母和空格,首先可以使用字符串的trim方法将字符串的首尾空格都去除(不管首尾有没有空格),去除首尾空格后,得到的字符串末尾一定是英文字母。
    • 接下来就要判断这个英文字母的连续性了,有多少个英文字母连续(中间没有空格),最后一个单词的长度就是多长。
    • 从后向前遍历去除前后空格的字符串,找到第一个字符为空格的下标,最后一位单词的长度就为整个字符串长度减去当前下标,再减去1,因为最后一位下标为length - 1;
    • 如果只有一个单词,即去除前后空格后再无空格,那么最后一个单词的长度就是去除空格后字符串的长度。
function lengthOfLastWord(s: string): number {
    let str = s.split(' ');
    for(let i = str.length - 1; i >= 0; i--){
        if(str[i] !== ''){
            return str[i].length;
        }
    }
};
  • 第二种方式
    • 将给定带空格的字符串用split方法按照空格切割成数组。那么原本是空格的将会分为数组的空字符串项
    • 将数组从后向前遍历,第一个不是空字符串的项就是最后一个单词。返回该数组项的长度即可。