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