Определение индекса первого уникального символа в строке

Сначала посчитайте частоты символов, затем пройдите строку слева направо и верните индекс первого с частотой 1. Если такого нет, результат −1.

Короткий ответ

Что ответить на собеседовании

Сначала посчитайте частоты символов, затем пройдите строку слева направо и верните индекс первого с частотой 1. Если такого нет, результат −1.

Подробный разбор

Ответ с пояснениями

Условие

Дана строка s. Необходимо найти первый символ, который встречается только один раз, и вернуть его индекс. Если в строке нет символов, удовлетворяющих условию, следует вернуть -1.

Примеры:

val s = "hutrihbp" // (u) result = 1
val s = "abcabce" // (e) result = 6
val s = "uuee"    // () result = -1

Ответ

Сначала посчитайте частоты символов, затем пройдите строку слева направо и верните индекс первого с частотой 1. Если такого нет, результат −1.

fun firstUniqueIndex(s: String): Int {
    val counts = HashMap<Char, Int>()
    for (ch in s) counts[ch] = (counts[ch] ?: 0) + 1
    return s.indexOfFirst { counts[it] == 1 }
}

Время O(n), память O(k) для разных Char. Для примеров ответ 1, 6 и −1. Здесь индекс и символ понимаются как Kotlin Char/UTF-16, что подходит приведённым латинским строкам. Для emoji и графем нужен отдельно согласованный способ сегментации и индексации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее