> Какая структура данных подходит для хранения количества букв в строках при проверке анаграмм (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-символов, что важно в мобильных приложениях.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью