zoukankan      html  css  js  c++  java
  • [LeetCode 557] 反转字符串中的单词 III

    题目:

    给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

    示例 1:

    输入: "Let's take LeetCode contest"
    输出: "s'teL ekat edoCteeL tsetnoc" 

    注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解答:

      1.解题思路:

      • 题目是按单词反转的,而且需要保留空格和单词初始顺序,说明可以通过空格划分的方式形成数组split
      • 然后遍历数组的每个元素,反转再转换为字符串 
    var reverseWords = function(s) {
        let arr = s.split(' ')
        let result = arr.map(item => {
            return item.split('').reverse().join('')
        })
        return result.join(' ')
    };

       2.解题思路:

      • 可以看到第一种解法的结果并不快而且写得很冗余,多了arr和result两个变量 
    var reverseWords = function(s) {
        return s.split(' ').map(item => {
            return item.split('').reverse().join('')
        }).join(' ')
    };

       3.解题思路:

      • 然而还是能看出来仍然有提升空间
      • 看到了题解里有个小伙伴不用map方法,少了遍历速度大大提升

        

    var reverseWords = function(s) {
        let arr=s.split("").reverse().join("")
        return arr.split(" ").reverse().join(" ")
    };

      4.解题思路:

      • 除了使用split方法,还可以使用match,通过正则去匹配
      • /[w']+/g :"g"代表全局,"[w']"中括号是可选项,"w"是识别单词(因为题目中有 " ' ",所以需要加上“ ' ”),"+"代表一次或多次
      • 此外split(' ')其实等价于用正则表示split(/s/g)  "s"是转移符号用以匹配任何空白字符,包括空格、制表符、换页符等等   
    var reverseWords = function(s) {
      return s.match(/[w']+/g).map(item => {
          return item.split('').reverse().join('')
      }).join(' ')
    };

         

         

  • 相关阅读:
    验证码图片识别
    DataSnap下的分包获取
    uniGUI试用笔记(十)
    EControl的安装
    Cesium应用篇:3控件(6) FullScreen/ VR / Home
    Cesium应用篇:3控件(5)CesiumInspector
    Cesium应用篇:3控件(4)Geocoder
    Cesium应用篇:3控件(3)SelectionIndicator& InfoBox
    Cesium应用篇:3控件(2)BaseLayerPicker
    Cesium应用篇:3控件(1)Clock
  • 原文地址:https://www.cnblogs.com/TTblog5/p/12562194.html
Copyright © 2011-2022 走看看