前端算法-最后一个单词的长度

98 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

题目

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

输入: s = "luffy is still joyboy"
输出: 6
解释: 最后一个单词是长度为6的“joyboy”。

题解

我们先声明一个res变量,在使用split方法将出参s字符串中以空格隔开的字符转换为数组并赋值给res变量,然后使用for循环的方法对res数组进行倒序循环,在循环中使用if语句进行判断当前res数组中的字符是否长度等于0,如果等于0则进行下一轮循环,如果当前res数组中的字符数据长度不等于0的,则直接将字符的数据长度返回出去

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

这是另一种思路,我们先声明一个len变量,他是出参s的总长度,在声明一个flag变量,默认值为false,然后在声明一个res变量用于存储最终返回结果的,然后我们使用for循环进行倒序循环,在循环中我们先判断当前flag变量是否为true且当前循环出参s的值是否为空,如果是则退出循环,如果不是则进入下一层判断,我们判断当前出参s循环中的值是否不为空,为空则直接进入下一次循环,不为空则将flag变量改为true,并将当前的字符拼接到res变量上,当循环结束后,直接返回变量res的数据长度即可

var lengthOfLastWord = function (s) {
    const len = s.length;
    let flag = false;
    let res = '';
    for (let i = len - 1; i >= 0; i--) {
        if (flag && s[i] === ' ') break;
        if (s[i] !== ' ') {
            flag = true;
            res += s[i];
        }
    }
    return res.length;
};

这是最简单的方法,我们只需要使用trim方法先将出参s去除两端空格,在使用split方法以空格的方式隔开组成数组,然后在使用pop方法删除数组中的末尾值,最后将当前的值长度直接返回即可

 var lengthOfLastWord = function(s) {
    return s.trim().split(' ').pop().length
 };

坚持努力,无惧未来!