反轉字串(JavaScript)

Ozzie發表於2020-04-14

題目

  1. 連結:https://leetcode-cn.com/problems/reverse-w...
  2. 題面:
    反轉字串(JavaScript)

個人方法

  1. 分析:由於每個單詞反轉後的順序不變,所以我們將該字串,按照空格分割成獨立單詞,再反轉單詞,再拼接

  2. 程式碼:

    var reverseWords = function(s) {
        // 將字串按空格分成單詞,並存入陣列中
        let arr = s.split(' ')
        // 遍歷陣列,將每個單詞拆成字母存入陣列,再反轉,再拼接成單詞
        let result = arr.map(item => {
            return item.split('').reverse().join('')
        })
        // 將所有單詞用空格連成字串
        return result.split(' ')
    }
    • 優化:

      var reverseWords = function(s) {
          return s.split(' ').map(item => {
              return item.split('').reverse().join('')
          }).join(' ')
      };
      // 這樣就沒有了 arr 和 result,節省了時間和空間

大佬啟示

  1. 之前是先分割成獨立單詞,再反轉單詞,再拼接,可是我們用到的 map 方法是比較耗時的,所以優化如下:

    var reverseWords = function(s) {
        return s.split('').reverse().join('').split(' ').reverse().join(' ')
    }
    • 進一步優化為:

      // split 的引數也可以是正規表示式,所以用 /\s+/ 來代替原先的空格字元
      var reverseWords = function(s) {
          return s.split('').reverse().join('').split(/\s+/).reverse().join(' ')
      };
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章