最后一个单词的长度
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情。
58. 最后一个单词的长度
算题
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World" 输出:5 解释:最后一个单词是“World”,长度为5。 示例 2:
输入:s = " fly me to the moon " 输出:4 解释:最后一个单词是“moon”,长度为4。 示例 3:
输入:s = "luffy is still joyboy" 输出:6 解释:最后一个单词是长度为6的“joyboy”。
解析
解法1:
最简单思路(面向api解题):
- 1、每个单词之间是有空格的,使用数组来容纳
- 2、去除首末位的空格
- 3、拿到最后一个数组的单词长度
var lengthOfLastWord = function(s) {
s = s.trim().replace(/\s/g,'%').split('%')
return s[s.length-1].length
};
其实这个一看就知道了,去除空格之后的字符串成了整整意义的单词,再通过中间的空格来切分到数组,获取到最后一个单词,在返回数组长度
最后附上提交结果:
解法2:
正常逻辑:
- 1、从后往前遍历,通过这样计算可以获取到最后的一个单词的长度
- 2、对于空格,可以过滤掉
- 3、找到了一个单词后,就可以直接退出了
var lengthOfLastWord = function (s) {
let ct = 0;
for (let i = s.length - 1; i >= 0; i--) {
if (s[i] === " " && ct === 0) continue;
if (s[i] !== " ") ct++;
if (s[i] === " ") break;
}
return ct;
};
总结
这题的解法比较基础,常用的一些方法或者思路就能解决此类问题。