First Unique Character in a String

https://leetcode.com/problems/first-unique-character-in-a-string/description/Easy

Условие

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

Примеры

Input: s = "leetcode”

Output: 0

Explanation: Первый уникальный символ ‘l’ находится на индексе 0.
Input: s = "loveleetcode”

Output: 2
Input: s = "aabb”

Output: -1

Решение

fun firstUniqChar(s: String): Int {
    val charCount = IntArray(26)  // Массив для подсчета количества каждой буквы

    // Подсчитываем количество каждой буквы в строке
    for (char in s) {
        charCount[char - 'a']++
    }

    // Находим первый уникальный символ
    for (i in s.indices) {
        if (charCount[s[i] - 'a'] == 1) {
            return i  // Возвращаем индекс первого уникального символа
        }
    }

    return -1  // Если уникальных символов нет
}

Временная сложность

O(n), где n — длина строки s, так как мы проходим по строке дважды (подсчет и поиск).

Пространственная сложность

O(1), так как используется фиксированный массив размера 26 для хранения количества букв.