Is Subsequence

https://leetcode.com/problems/is-subsequence/description/Easy

Условие

Даны две строки s и t, нужно определить, является ли s подпоследовательностью t. Подпоследовательность — это строка, полученная путем удаления некоторых (возможно, ни одного) символов из другой строки без изменения порядка оставшихся символов.

Примеры

Input: s = “abc”, t = “ahbgdc”

Output: true
Input: s = “axc”, t = “ahbgdc”

Output: false

Решение

fun isSubsequence(s: String, t: String): Boolean {
    var sIndex = 0
    var tIndex = 0

    // Проходим по строке t, проверяя, присутствуют ли все символы строки s в правильном порядке
    while (sIndex < s.length && tIndex < t.length) {
        if (s[sIndex] == t[tIndex]) {
            sIndex++  // Переходим к следующему символу в s, если текущий символ совпал
        }
        tIndex++  // Переходим к следующему символу в t в любом случае
    }

    return sIndex == s.length  // Если прошли всю строку s, значит, она является подпоследовательностью
}

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

O(n + m), где n — длина строки s, а m — длина строки t, так как мы проходим по каждой строке один раз.

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

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