Sobes.tech
Middle

Nombre más formal: coincidencia de cadenas aproximada (encontrar una coincidencia aproximada). Se requiere verificar si la primera cadena es una subsecuencia de la segunda. Una subsecuencia es cuando se puede obtener la primera cadena de la segunda eliminando algunos caracteres. Entrada: 'car', 'cartwheel' Salida: true Entrada: 'cwhl', 'cartwheel' Salida: true Entrada: 'cwhee', 'cartwheel' Salida: true Entrada: 'cartwheel', 'cartwheel' Salida: true Entrada: 'cwheeel', 'cartwheel' Salida: false Entrada: 'lw', 'cartwheel' Salida: false

sobes.tech AI

Respuesta de la IA

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

Пример решения на 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

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