内容简介: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/
题目内容:
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World"
输出: 5
三 解题
小伙伴可以先自己在本地尝试解题,再回来看看 jsliang 讲解下使用 JavaScript 的解题思路。
3.1 解法 - 暴力破解
解题代码:
var lengthOfLastWord = function(s) {
// 防止 'b a cc' 的情况,去掉多余空格(去重)
const result = [...new Set(s.split(' '))];
// 防止 'a ' 的情况
if (result.length >=2 && result[result.length - 1] === '') {
return result[result.length - 2].length
}
return result[result.length - 1].length;
};
执行测试:
s
:HelloWorld
return
:
5
LeetCode Submit:
✔ Accepted
✔ 59/59 cases passed (72 ms)
✔ Your runtime beats 96.22 % of javascript submissions
✔ Your memory usage beats 20.38 % of javascript submissions (33.9 MB)
知识点:
split()
:split()
方法使用指定的分隔符字符串将一个 String 对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。split()
详细介绍Set
:Set
对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。Set
详细介绍
解题思路:
首先,说个比较复杂的逻辑:
通过
split()
将字符串打成数组通过
Set
对数组去重通过
[...Object]
扩展运算符再将Set
类型打成数组。
然后,由于 'a '
的情况下,会将该字符串转成 ['a','']
,所以我们需要判断最后一个是不是 ''
,如果是的话,我们取倒数第二个的长度。
最后,正常情况下,返回倒数第一个的长度。
3.2 解法 - 正则表达式
解题代码:
var lengthOfLastWord = function(s) {
s = s.replace(/(\s*$)/g, "");
let arr = s.split(' ');
return arr[arr.length - 1].length;
};
执行测试:
s
:HelloWorld
return
:
5
LeetCode Submit:
✔ Accepted
✔ 59/59 cases passed (64 ms)
✔ Your runtime beats 99.42 % of javascript submissions
✔ Your memory usage beats 35.25 % of javascript submissions (33.7 MB)
知识点:
RegExp
:构造函数的原型对象。常用语一些便捷操作。RegExp
详细介绍split()
:split()
方法使用指定的分隔符字符串将一个 String 对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。split()
详细介绍
解题思路:
首先,进行正则去空格, \s
的意思是匹配任何空白字符,包括空格、制表符、换行符等,而 *
表示任意个, $
表示结尾,所以 \s*$
的意思就是匹配结尾的任意个空格,并将其替换为 ''
(注意,不是空,而是去掉)
然后,通过 split()
将字符串打成数组。
最后,返回数组最后一位的长度。
jsliang 广告推送:
也许小伙伴想了解下云服务器
或者小伙伴想买一台云服务器
或者小伙伴需要续费云服务器
欢迎点击 云服务器推广 查看!
jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于https://github.com/LiangJunrong/document-library上的作品创作。
本许可协议授权之外的使用权限可以从 https://creativecommons.org/licenses/by-nc-sa/2.5/cn/ 处获得。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- LeetCode每日一题: 最后一个单词的长度(No.58)
- 算法 – 给出一个单词,打印其索引,可以相应地增加单词
- Pocketsphinx – 添加单词和提高准确性
- Spark入门(三)--Spark经典的单词统计
- 每日一道算法题--leetcode 290--单词规则--python
- go基础库之将字符串分解为单词
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高分辨率遥感卫星应用
张永 / 科学分社 / 2004-1 / 48.00元
高分辨率遥感卫星应用(成像模型处理算法及应用技术),ISBN:9787030128249,作者:张永生等著一起来看看 《高分辨率遥感卫星应用》 这本书的介绍吧!