LeetCode - 058 - 最后一个单词的长度(length-of-last-word)

栏目: IT技术 · 发布时间: 5年前

内容简介:LeetCode - 058 - 最后一个单词的长度(length-of-last-word)

Create by jsliang on 2019-06-10 18:18:16
Recently revised in 2019-06-10 19:46:34

一 目录

不折腾的前端,和咸鱼有什么区别

| 目录 | | --- | | 一 目录 | | 二 前言 | | 三 解题 | |  3.1 解题 - 暴力破解 | |  3.2 解法 - 正则表达式 |

二 前言

  • 难度:简单

  • 涉及知识:字符串

  • 题目地址:https://leetcode-cn.com/problems/length-of-last-word/

  • 题目内容

  1. 给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。

  2. 如果不存在最后一个单词,请返回 0 

  3. 说明:一个单词是指由字母组成,但不包含任何空格的字符串。

  4. 示例:

  5. 输入: "Hello World"

  6. 输出: 5

三 解题

小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 讲解下使用 JavaScript 的解题思路。

3.1 解法 - 暴力破解

  • 解题代码

  1. var lengthOfLastWord = function(s) {

  2. // 防止 'b a cc' 的情况,去掉多余空格(去重)

  3. const result = [...new Set(s.split(' '))];

  4. // 防止 'a ' 的情况

  5. if (result.length >=2 && result[result.length - 1] === '') {

  6. return result[result.length - 2].length

  7. }

  8. return result[result.length - 1].length;

  9. };

  • 执行测试

  1. s: HelloWorld

  2. return

  1. 5

  • LeetCode Submit

  1. Accepted

  2. 59/59 cases passed (72 ms)

  3. Your runtime beats 96.22 % of javascript submissions

  4. Your memory usage beats 20.38 % of javascript submissions (33.9 MB)

  • 知识点

  1. split(): split() 方法使用指定的分隔符字符串将一个 String 对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。 split() 详细介绍

  2. Set: Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。 Set 详细介绍

  • 解题思路

首先,说个比较复杂的逻辑:

  1. 通过 split() 将字符串打成数组

  2. 通过 Set 对数组去重

  3. 通过 [...Object] 扩展运算符再将 Set 类型打成数组。

然后,由于 'a ' 的情况下,会将该字符串转成 ['a',''],所以我们需要判断最后一个是不是 '',如果是的话,我们取倒数第二个的长度。

最后,正常情况下,返回倒数第一个的长度。

3.2 解法 - 正则表达式

  • 解题代码

  1. var lengthOfLastWord = function(s) {

  2. s = s.replace(/(\s*$)/g, "");

  3. let arr = s.split(' ');

  4. return arr[arr.length - 1].length;

  5. };

  • 执行测试

  1. s: HelloWorld

  2. return

  1. 5

  • LeetCode Submit

  1. Accepted

  2. 59/59 cases passed (64 ms)

  3. Your runtime beats 99.42 % of javascript submissions

  4. Your memory usage beats 35.25 % of javascript submissions (33.7 MB)

  • 知识点

  1. RegExp:构造函数的原型对象。常用语一些便捷操作。 RegExp 详细介绍

  2. split(): split() 方法使用指定的分隔符字符串将一个 String 对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。 split() 详细介绍

  • 解题思路

首先,进行正则去空格, \s 的意思是匹配任何空白字符,包括空格、制表符、换行符等,而 *表示任意个, $ 表示结尾,所以 \s*$ 的意思就是匹配结尾的任意个空格,并将其替换为 ''(注意,不是空,而是去掉)

然后,通过 split() 将字符串打成数组。

最后,返回数组最后一位的长度。


jsliang 广告推送:
也许小伙伴想了解下云服务器
或者小伙伴想买一台云服务器
或者小伙伴需要续费云服务器
欢迎点击 云服务器推广 查看!

LeetCode - 058 - 最后一个单词的长度(length-of-last-word)

jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

高分辨率遥感卫星应用

高分辨率遥感卫星应用

张永 / 科学分社 / 2004-1 / 48.00元

高分辨率遥感卫星应用(成像模型处理算法及应用技术),ISBN:9787030128249,作者:张永生等著一起来看看 《高分辨率遥感卫星应用》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具