題目
個人方法
分析:由於每個單詞反轉後的順序不變,所以我們將該字串,按照空格分割成獨立單詞,再反轉單詞,再拼接
程式碼:
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,節省了時間和空間
大佬啟示
之前是先分割成獨立單詞,再反轉單詞,再拼接,可是我們用到的
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 協議》,轉載必須註明作者和本文連結