Минимальное расстояние между символами X и Y

Запоминайте последние позиции X и Y; при встрече одного символа сравнивайте расстояние до последнего противоположного. Число позиций между ними равно разности индексов минус один.

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

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

Запоминайте последние позиции X и Y; при встрече одного символа сравнивайте расстояние до последнего противоположного. Число позиций между ними равно разности индексов минус один.

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

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

Условие

Имеется строка, содержащая только символы «X», «Y» и «O». Необходимо вычислить наименьшее количество позиций между любой парой символов «X» и «Y». Если хотя бы один из этих символов в строке отсутствует, функция должна вернуть 0.

def distance(s: str) -> int:
    ...

Ответ

Запоминайте последние позиции X и Y; при встрече одного символа сравнивайте расстояние до последнего противоположного. Число позиций между ними равно разности индексов минус один.

def distance(s):
    last_x = last_y = None
    best = None
    for index, char in enumerate(s):
        if char == 'X':
            last_x = index
            other = last_y
        elif char == 'Y':
            last_y = index
            other = last_x
        else:
            continue
        if other is not None:
            gap = index - other - 1
            best = gap if best is None else min(best, gap)
    return 0 if best is None else best

Для XOY ответ 1, для XY — 0. По условию отсутствие хотя бы одного типа символов тоже обозначается нулём. Время O(n), память O(1).

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

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

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

Подробнее