Sobes.tech
Middle

Daha resmi isimlendirme: yaklaşık dize eşleştirme (yaklaşık eşleşmeyi bulma). İlk dizenin ikinci dizenin alt dizisi olup olmadığını kontrol etmeniz gerekir. Alt dizi, ilk diziyi ikinci diziden bazı karakterleri silerek elde edebildiğiniz zaman olur. Girdi: 'car', 'cartwheel' Çıktı: true Girdi: 'cwhl', 'cartwheel' Çıktı: true Girdi: 'cwhee', 'cartwheel' Çıktı: true Girdi: 'cartwheel', 'cartwheel' Çıktı: true Girdi: 'cwheeel', 'cartwheel' Çıktı: false Girdi: 'lw', 'cartwheel' Çıktı: false

sobes.tech yapay zeka

AI'dan gelen yanıt

Задача — проверить, является ли первая строка подпоследовательностью второй. Это значит, что все символы первой строки встречаются во второй в том же порядке, но не обязательно подряд.

Пример решения на Go:

type void struct{}

func isSubsequence(s, t string) bool {
    i, j := 0, 0
    for i < len(s) && j < len(t) {
        if s[i] == t[j] {
            i++
        }
        j++
    }
    return i == len(s)
}

// Пример использования:
// fmt.Println(isSubsequence("car", "cartwheel")) // true
// fmt.Println(isSubsequence("cwheeel", "cartwheel")) // false

Идея: пройтись по обеим строкам двумя указателями. Если символы совпадают — сдвигаем указатель первой строки. В конце, если весь первый строка пройдена, значит она является подпоследовательностью второй.