在 JavaScript 中建立字串的所有可能的唯一排列


問題

我們需要編寫一個 JavaScript 函式,它接受一個字串 str。該函式應該建立輸入字串的所有排列並去重重複項(如果存在)。這意味著,我們必須以所有可能的順序對輸入中的所有字母進行洗牌。

示例

以下為程式碼 -

 線上演示

const str = 'aabb';
const permute = (str = '') => {
   if (!!str.length && str.length < 2 ){
      return str
   }
   const arr = [];
   for (let i = 0; i < str.length; i++){
      let char = str[i]
      if (str.indexOf(char) != i)
         continue
         let remainder = str.slice(0, i) + str.slice(i + 1, str.length)
         for (let permutation of permute(remainder)){
            arr.push(char + permutation)
         }
   }
   return arr
}
console.log(permute(str));

輸出

以下為控制檯輸出 -

[ 'aabb', 'abab', 'abba', 'baab', 'baba', 'bbaa' ]

更新於: 2021 年 4 月 17 日

1000+ 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始使用
廣告