JS leetcode 翻转字符串里的单词 题解分析
壹 ❀ 引
今天来做一道难度中等,但实际难度并不是很高的题目,题目来源leetcode151. 翻转字符串里的单词,题目描述如下:
给定一个字符串,逐个翻转字符串中的每个单词。
示例 1:
输入: "the sky is blue"
输出: "blue is sky the"
示例 2:
输入: " hello world! "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:
输入: "a good example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
我先说说我的傻吊做法,再来分析优质的做法,那么本文开始。
贰 ❀ 不太聪明的做法
当我看到这题,我脑袋里第一想到的就是正则....对,用正则过滤掉字符首位空格,并将文字中多个空格转为一个,这样咱就可以利用split进行切割,reverse反转后,再利用join还原成字符串,说干就干(为此我还复习了一下正则...):
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.replace(/^\s+|\s+$/g, "").replace(/\s{2,}/g, " ").split(" ").reverse().join(" ");
};
傻吊在哪呢,我先用s.replace(/^\s+|\s+$/g, "")去除了首位空格,之后又用replace(/\s{2,}/g, " ")将可能存在的字符间多处空格转成一个,再按空格切分,反转,再次拼接。
我之所以跟空格这么过不去,还是因为题目描述中有多处强调空格的地方,所以才出此下策。
在查看别人思路的时候,我才想起来了有现成的trim()方法可用,所以可以这样:
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
return s.trim().replace(/\s{2,}/g, " ").split(" ").reverse().join(" ");
};
显得我像个憨憨....
但事实上,我们根本不需要关注空格.....
以," hello world! "为例,将它按照" "进行切割,可以得到一个包含字符与多个空格的数组:
" hello world! ".split(" ");//["", "", "hello", "", "", "world!", "", ""]
我们完全可以遍历一遍,去除掉数组中所有空格,这样就得到了如下数组:
["hello","world!"]
通过反转数组,再用join(" ")不就达到效果了。亏我纠结怎么加工空格想了半天,直接上代码:
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function (s) {
return s.split(" ").filter(item => item).reverse().join(" ");
};
那么关于本题就分析到这里了。
JS leetcode 翻转字符串里的单词 题解分析的更多相关文章
- C#版(击败100.00%的提交) - Leetcode 151. 翻转字符串里的单词 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- LeetCode 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输 ...
- leetcode python翻转字符串里的单词
# Leetcode 151 翻转字符串里的单词### 题目描述给定一个字符串,逐个翻转字符串中的每个单词. **示例1:** 输入: "the sky is blue" 输出: ...
- 代码随想录算法训练营day08 | leetcode 344.反转字符串/541. 反转字符串II / 剑指Offer05.替换空格/151.翻转字符串里的单词/剑指Offer58-II.左旋转字符串
基础知识 // String -> char[] char[] string=s.toCharArray(); // char[] -> String String.valueOf(str ...
- LeetCode 151. 翻转字符串里的单词(Reverse Words in a String)
151. 翻转字符串里的单词 151. Reverse Words in a String
- Java实现 LeetCode 151 翻转字符串里的单词
151. 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: "the sky is blue" 输出: "blue is sky th ...
- 【LeetCode】151. 翻转字符串里的单词(剑指offer 58-I)
151. 翻转字符串里的单词 知识点:字符串:双指针 题目描述 给你一个字符串 s ,逐个翻转字符串中的所有 单词 . 单词 是由非空格字符组成的字符串.s 中使用至少一个空格将字符串中的 单词 分隔 ...
- 【算法训练营day8】LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58-II. 左旋转字符串
[算法训练营day8]LeetCode344. 反转字符串 LeetCode541. 反转字符串II 剑指Offer05. 替换空格 LeetCode151. 翻转字符串里的单词 剑指Offer58- ...
- 【LeetCode】151. Reverse Words in a String 翻转字符串里的单词(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.co ...
- 力扣(LeetCode)翻转字符串里的单词 个人题解
给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输 ...
随机推荐
- kafka Linux环境搭建安装及命令创建队列生产消费消息
本文为博主原创,未经允许不得转载: 1. 安装JDK 由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK. yum install java‐1.8.0‐ ...
- java 文件上传 :MultipartFile 类型转换为file类型
通过前台进行文件上传并保存服务器. 1.从前台解析得到的文件类型为 MultipartFile 类型,在进行解析的时候,我们需要将 MultipartFile 类型转换为file类型,然后将文件上传到 ...
- C语言中的操作符:了解与实践
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. 操作符的分类 操作符又叫运算符,它在C语言中起着非常大的作用,以下是 ...
- CSS - 使用CSS 3D属性来完成页面视差滚动效果。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.11.21)
百度网盘会员账号共享(11.21更新) 账号:tgc91660 密码:6858hykh 账号:ofj51327 密码:rvzp3251 账号:5799osrb 密码:862lwtr 账号:3730sw ...
- [转帖]解Bug之路-NAT引发的性能瓶颈
https://zhuanlan.zhihu.com/p/286532997 解Bug之路-NAT引发的性能瓶颈 笔者最近解决了一个非常曲折的问题,从抓包开始一路排查到不同内核版本间的细微差异,最后才 ...
- [转帖]oracle rac后台进程和LMS说明
本文摘抄录oracle官方文档,oracle rac使用的后台进程,用以备忘,记录之. About Oracle RAC Background Processes The GCS and GES pr ...
- [转帖]tidb数据库5.4.3和6.5.3版本性能测试对比
https://tidb.net/blog/5454621f 一.测试需求: 基于历史原因,我们的业务数据库一直使用5.4.3,最近由于研发提出需求:需要升级到6.5.3版本,基于版本不同,需要做 ...
- [转帖]crontab 定时任务,免交互式编写任务文件
https://www.jianshu.com/p/8eab68bcfc8e 正常添加定时任务是在命令行使用命令 crontab -ecrontab -e编写完的文件怎么找到?文件默认保存在/var/ ...
- [转帖]数据库系列之TiDB存储引擎TiKV实现机制
TiDB存储引擎TiKV是基于RocksDB存储引擎,通过Raft分布式算法保证数据一致性.本文详细介绍了TiKV存储引擎的实现机制和原理,加深对TiDB底层存储架构的理解. 1.TiDB存储引擎Ti ...