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: 输 ...
随机推荐
- 如果诸葛亮用C#写出师表...
看到一篇18年的文章 "C++版<出师表>",站长觉得挺有意思的,就用C# 控制台也实现了一遍,技术上没啥难度,但复制代码费了1.2个小时,纯粹无聊写着玩,看者别在意枚 ...
- linux环境C语言实现:h264与pcm封装成mp4视频格式
前言 H.264是压缩过的数据,PCM是原始数据,MP4是一种视频封装格式.实际H.264与PCM不能直接合成MP4格式,因为音频格式不对.这里需要中间对音频做一次压缩处理.基本流程为:将PCM音频数 ...
- [转帖]Linux 内核的 4 大 IO 调度算法
https://cloud.tencent.com/developer/article/1615744 Linux 内核包含4个IO调度器,分别是 Noop IO scheduler.Anticipa ...
- [转帖]Oracle参数解析(parallel_force_local)
https://www.modb.pro/db/122032 是否需要增加这个参数? 往期专题请查看www.zhaibibei.cn这是一个坚持Oracle,Python,MySQL原创内容的公众号 ...
- [转帖]记druid 连接池没满,但超时问题 GetConnectionTimeoutException active 5, maxActive 100
记druid 连接池没满,但超时问题 GetConnectionTimeoutException active 5, maxActive 100 问题说明 线上服务突然出现报错,通过日志查找发现是因为 ...
- [转帖]为非root用户添加NOPASSWD权限
https://www.jianshu.com/p/d1e71bda4b34 查看树莓派默认是怎么为pi用户免去密码 所有配置文件都在 /etc 目录下,免去密码配置文件也不例外.在/etc/sudo ...
- [转帖]3.3.8. KWR运行期对比报告 KWR DIFF
https://help.kingbase.com.cn/v8/perfor/performance-optimization/performance-optimization-6.html#sys- ...
- [转帖]Redis命令详解:Keys
https://jackeyzhe.github.io/2018/09/22/Redis%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3%EF%BC%9AKeys/ 介绍完Re ...
- [转帖]linux求数组的交集,shell/bash 交集、并集、差集
方法一(直接用文件名):取两个文本文件的并集.交集.差集 并: sort -m 交: sort -m 差 file1 - file2: sort -m 方法二(用变量参数):取两个文本文件的并集.交集 ...
- [转帖]016 Linux 卧槽,看懂进程信息也不难嘛?top、ps
016 Linux 卧槽,看懂进程信息也不难嘛?top.pshttps://my.oschina.net/u/3113381/blog/5455267 1 扒开看看 top 命令参数详情 Linux ...