อะนากราม (Anagrams)
สองคำหรือวลีที่สามารถสร้างได้จากการจัดเรียงตัวอักษรของอีกคำหนึ่งในลำดับที่ต่างกัน เรียกว่าอะนากรามของกัน เช่น rat และ tar
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริงที่อาจมีคำอะนากราม ฟังก์ชันต้องจัดกลุ่มอะนากรามทั้งหมดเป็นซับอาร์เรย์แยกกันและคืนอาร์เรย์ใหม่ที่สร้างขึ้น
ตัวอย่าง
ถ้าอาร์เรย์นำเข้าคือ:
const arr = ['rat', 'jar', 'tar', 'raj', 'ram', 'arm', 'mar', 'art'];
อาร์เรย์ผลลัพธ์ควรเป็น:
const output = [ ['rat', 'tar', 'art'], ['jar', 'raj'], ['ram', 'arm', 'mar'] ];
ตัวอย่างโค้ด
const arr = ['rat', 'jar', 'tar', 'raj', 'ram', 'arm', 'mar', 'art'];
const groupSimilarWords = (arr = []) => {
if (arr.length === 0) {
return arr;
}
const map = new Map();
for(let str of arr) {
let sorted = [...str];
sorted.sort();
sorted = sorted.join('');
if(map.has(sorted)) {
map.get(sorted).push(str);
} else {
map.set(sorted, [str]);
}
}
return [...map.values()];
};
console.log(groupSimilarWords(arr));
ผลลัพธ์
[['rat', 'tar', 'art'], ['jar', 'raj'], ['ram', 'arm', 'mar']]