Более формальное название — approximate string matching (нахождение приблизительного соответствия).

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

Условие

Более формальное название — approximate string matching (нахождение приблизительного соответствия). Требуется проверить, является ли первая строка подпоследовательностью второй. Подпоследовательность - когда можно получить первую строку из второй, путём удаления некоторых символов.

Input: 'car', 'cartwheel' Output: true

Input: 'cwhl', 'cartwheel' Output: true

Input: 'cwhee', 'cartwheel' Output: true

Input: 'cartwheel', 'cartwheel' Output: true

Input: 'cwheeel', 'cartwheel' Output: false

Input: 'lw', 'cartwheel' Output: false

Ответ

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

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

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее