Ключ группы — символы слова, отсортированные в одинаковом порядке. Соберите группы в Map и отсортируйте их по числу элементов.
Группировка и упорядочивание анаграмм
Ключ группы — символы слова, отсортированные в одинаковом порядке. Соберите группы в Map и отсортируйте их по числу элементов.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализовать функцию, получающую массив строк. Необходимо определить все группы анаграмм и вернуть их в виде отсортированного списка, упорядоченного по количеству вхождений каждой группы.
Ответ
Ключ группы — символы слова, отсортированные в одинаковом порядке. Соберите группы в Map и отсортируйте их по числу элементов.
function groupAnagrams(words) {
const groups = new Map();
for (const word of words) {
const key = JSON.stringify(Array.from(word).sort());
if (!groups.has(key)) groups.set(key, []);
groups.get(key).push(word);
}
return [...groups.values()].sort((a, b) => b.length - a.length);
}
Здесь группы идут по убыванию размера; при равенстве сохраняется порядок первого появления. Регистр и пробелы значимы, повторения слов учитываются. Для иных правил нормализации или сортировки нужен дополнительный контракт.