Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดกลุ่มคำกับอะนากรามของมันใน JavaScript

อะนากราม (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']]