zoukankan      html  css  js  c++  java
  • 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(" ");
    };
    

    那么关于本题就分析到这里了。

  • 相关阅读:
    Html禁止粘贴 复制 剪切
    表单标签
    自构BeanHandler(用BeansUtils)
    spring配置中引入properties
    How Subcontracting Cockpit ME2ON creates SD delivery?
    cascadia code一款很好看的微软字体
    How condition value calculated in sap
    Code in SAP query
    SO Pricing not updated for partial billing items
    Javascript learning
  • 原文地址:https://www.cnblogs.com/echolun/p/13033044.html
Copyright © 2011-2022 走看看