Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Mô tả vấn đề

Chúng ta cần viết hàm JavaScript nhận vào chuỗi str. Hàm tạo tất cả hoán vị của chuỗi và loại bỏ trùng lặp (nếu có). Tức là sắp xếp tất cả chữ cái theo mọi thứ tự có thể.

Ví dụ minh họa

Mã thực hiện (đệ quy + bỏ qua ký tự trùng):

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

Kết quả trong console:

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