题目
给你一个字符串 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 };