> Какая структура данных подходит для хранения количества букв в строках при проверке анаграмм (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Ozon
Стек: Kotlin, Android
> Пример ответа
Для проверки анаграмм на Android (или в любом другом контексте) оптимальным выбором будет хеш-таблица (HashMap), где ключом является символ (буква), а значением - количество его вхождений в строку. Это позволяет за O(n) времени подсчитать частоты для одной строки и затем сравнить с другой.
Пример на Kotlin:
fun isAnagram(s1: String, s2: String): Boolean { if (s1.length != s2.length) return false val charCount = HashMap<Char, Int>() for (c in s1) charCount[c] = charCount.getOrDefault(c, 0) + 1 for (c in s2) { val count = charCount[c] ?: return false if (count == 1) charCount.remove(c) else charCount[c] = count - 1 } return charCount.isEmpty() }
Альтернативно, для ограниченного набора символов (например, только латиница или кириллица) можно использовать массив фиксированного размера (IntArray из 26 или 33 элементов), что ещё эффективнее по памяти и времени. Но HashMap универсален и подходит для любых Unicode-символов, что важно в мобильных приложениях.
> Похожие задачи по mobile
Что такое side table
Как используется рефлексия при сериализации
Как проверить, что все значения в мапе равны нулю
Что такое битовые сдвиги и где они применяются
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью