python def distance(string: str) -> int: # Проверяем наличие 'X' и 'Y' в строке if 'X' not in string or 'Y' not in string: return 0
Дана строка, состоящая из букв 'X', 'Y' и 'O'.
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