Intern
# Дадена е низ, състоящ се от буквите '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:
sobes.tech AI
Отговор от AI
def разстояние(string: str) -> int: # Проверяваме дали в низът има 'X' и 'Y' if 'X' not in string or 'Y' not in string: return 0
позиции_x = [i for i, ch in enumerate(string) if ch == 'X']
позиции_y = [i for i, ch in enumerate(string) if ch == 'Y']
минимално_разстояние = float('inf')
i, j = 0, 0
# Използваме два указателя за намиране на минималното разстояние
while i < len(позиции_x) and j < len(позиции_y):
разстояние = abs(позиции_x[i] - позиции_y[j])
if разстояние < минимално_разстояние:
минимално_разстояние = разстояние
# Преместваме указателя, за да намерим по-малко разстояние
if позиции_x[i] < позиции_y[j]:
i += 1
else:
j += 1
return минимално_разстояние