ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str ฟังก์ชันควรสร้าง permutation ทั้งหมดของสตริงอินพุตและลบซ้ำถ้ามี หมายถึงสลับตัวอักษรทุกตัวในทุกๆ ลำดับที่เป็นไปได้
ตัวอย่าง
โค้ดด้านล่างนี้
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' ]