Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Codewars 練習 04:回文構詞法

問題

找出回文構詞法 (anagrams) 的字串 (如 ‘eat’ 與 ‘ate’ 及 ‘tea’ 屬於同系列的回文構詞)。

我的作法

function anagrams(word, words) {
  let str = word.split('').sort().join(''),
      arr2 = [];
  words.forEach( function(w){
    if( w.split('').sort().join('') === str ) {
      arr2.push(w);
    }
  });
  return arr2;
}

投票評選最好的解法

String.prototype.sort = function() {
  return this.split("").sort().join("");
};

function anagrams(word, words) {
  return words.filter(function(x) {
      return x.sort() === word.sort();
  });
}

改善點

評選最佳的解法,是藉由定義字串物件的原型屬性 (prototype) 的方法,接著直接用 filter() 的方式來篩選符合條件的數值。

這次需要改進的地方一樣在「避免不必要的迴圈」上。此外,這次也建立了多餘的變數。透過繼承原型屬性的方式,可以將字串的排序直接標準化,也是提升運算效率的原因。

Eric Chuang
Eric Chuang

正職是廣告行銷人員,因為 Google Tag Manager 的關係開始踏入網站製作的領域,進一步把 WordPress 當成 PHP + HTML + CSS + JavaScript 的學習教材。此外,因為工作的關係,曾經用 Automattic 的 Underscores (_s) 替客戶與公司官網進行全客製化佈景主題開發。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料