Я работаю над проблемой Java, где мне нужно группировать слова, которые являются анаграммами друг друга. Например, с учетом массива ввода: < /p>
["eat", "tea", "tan", "ate", "nat", "bat"]
< /code>
Ожидаемый вывод должен группировать анаграммы вместе, как это: < /p>
[["eat", "tea", "ate"], ["tan", "nat"], ["bat"]]
< /code>
Сгруппированные слова могут быть в любом порядке, но анаграммы должны быть вместе в подписке. Чтобы собрать анаграммы.Map map = new HashMap();
for (String word : input) {
char[] chars = word.toCharArray();
Arrays.sort(chars);
String key = new String(chars);
map.computeIfAbsent(key, k -> new ArrayList()).add(word);
}
List result = new ArrayList(map.values());
< /code>
Этот подход работает для основных случаев, но я столкнулся с проблемами, когда присутствуют дубликаты записей или когда ввод включены пустые строки. Я также хочу понять, есть ли более эффективный или более чистый способ сделать это с использованием коллекций Java.>
Подробнее здесь: https://stackoverflow.com/questions/795 ... fficiently