https://leetcode.com/problems/occurrences-after-bigram Easy

Условие

Дана строка текста и два слова first и second. Верни список слов, которые следуют сразу после комбинации first и second в тексте.

Примеры

Input: text = "alice is a good girl she is a good student", first = "a", second = "good” Output: ["girl", "student"]

Input: text = "we will we will rock you", first = "we", second = "will” Output: ["we", "rock"]

Решение

fun findOcurrences(text: String, first: String, second: String): Array<String> {
    val words = text.split(" ")  // Разделяем текст на отдельные слова
    val result = mutableListOf<String>()  // Создаём список для хранения результата

    for (i in 0..words.size - 3) {  // Перебираем слова, останавливаясь за 2 слова до конца
        if (words[i] == first && words[i + 1] == second) {  // Если текущие слова совпадают с first и second
            result.add(words[i + 2])  // Добавляем следующее слово в результат
        }
    }

    return result.toTypedArray()  // Возвращаем результат в виде массива строк
}

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

Сложность O(n), где n — количество слов в тексте.

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

Сложность O(n), в худшем случае при хранении результата.