Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo tất cả các hoán vị duy nhất có thể có của một chuỗi trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng một chuỗi str. Hàm của chúng ta nên tạo tất cả các hoán vị của chuỗi đầu vào và loại bỏ các bản sao, nếu có. Điều này có nghĩa là, chúng ta phải xáo trộn tất cả các chữ cái từ đầu vào theo tất cả các thứ tự có thể.

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

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