Дана строка, состоящая из букв 'X', 'Y' и 'O'.

python def distance(string: str) -> int: # Проверяем наличие 'X' и 'Y' в строке if 'X' not in string or 'Y' not in string: return 0

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

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

python def distance(string: str) -> int: # Проверяем наличие 'X' и 'Y' в строке if 'X' not in string or 'Y' not in string: return 0

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

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

Условие

Дана строка, состоящая из букв 'X', 'Y' и 'O'.

Необходимо найти кратчайшее расстояние между буквами 'X' и 'Y',

либо вывести 0, если 'X' либо 'Y' отсутствуют.

"YY" -> 0

"XX" -> 0

"XY" -> 1

"YOX" -> 2

"OOOXOOYOXO" -> 2

"OOOXXOY" -> 2

def distance(string: str) -> int:

Ответ

python def distance(string: str) -> int: # Проверяем наличие 'X' и 'Y' в строке if 'X' not in string or 'Y' not in string: return 0

positions_x = [i for i, ch in enumerate(string) if ch == 'X']
positions_y = [i for i, ch in enumerate(string) if ch == 'Y']

min_dist = float('inf')
i, j = 0, 0

# Используем два указателя для поиска минимального расстояния
while i < len(positions_x) and j < len(positions_y):
    dist = abs(positions_x[i] - positions_y[j])
    if dist < min_dist:
        min_dist = dist

    # Сдвигаем указатель, чтобы найти меньшее расстояние
    if positions_x[i] < positions_y[j]:
        i += 1
    else:
        j += 1

return min_dist

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

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

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

Подробнее