[简单]算法:最后一个单词的长度(JS数组实现)

180 阅读2分钟

最后一个单词的长度

一起养成写作习惯!这是我参与「掘金日新计划 · 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
};

其实这个一看就知道了,去除空格之后的字符串成了整整意义的单词,再通过中间的空格来切分到数组,获取到最后一个单词,在返回数组长度

最后附上提交结果:

image.png

解法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;
};

image.png

总结

这题的解法比较基础,常用的一些方法或者思路就能解决此类问题。