Hai từ là anagram nếu sắp xếp lại ký tự được từ kia. Viết hàm nhóm các anagram trong mảng chuỗi thành các mảng con riêng biệt.
Ví dụ: ['rat','jar','tar','raj','ram','arm','mar','art'] → [['rat','tar','art'],['jar','raj'],['ram','arm','mar']].
Ví dụ
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].sort().join('');
if (map.has(sorted)) map.get(sorted).push(str);
else map.set(sorted, [str]);
}
return [...map.values()];
};
console.log(groupSimilarWords(arr));
Kết quả
[ ['rat','tar','art'], ['jar','raj'], ['ram','arm','mar'] ]