Sobes.tech
Intern

# Dana jest łańcuch składający się z liter 'X', 'Y' i 'O'. # Należy znaleźć najkrótszą odległość między literami 'X' i 'Y', # lub zwrócić 0, jeśli 'X' lub 'Y' nie występują. # "YY" -> 0 # "XX" -> 0 # "XY" -> 1 # "YOX" -> 2 # "OOOXOOYOXO" -> 2 # "OOOXXOY" -> 2 def distance(string: str) -> int:

sobes.tech AI

Odpowiedź od AI

def odległość(łańcuch: str) -> int: # Sprawdzamy, czy w łańcuchu są 'X' i 'Y' if 'X' not in łańcuch or 'Y' not in łańcuch: return 0

pozycje_x = [i for i, ch in enumerate(łańcuch) if ch == 'X']
pozycje_y = [i for i, ch in enumerate(łańcuch) if ch == 'Y']

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

# Używamy dwóch wskaźników do znalezienia minimalnej odległości
while i < len(pozycje_x) and j < len(pozycje_y):
    odl = abs(pozycje_x[i] - pozycje_y[j])
    if odl < min_odl:
        min_odl = odl

    # Przesuwamy wskaźnik, aby znaleźć mniejszą odległość
    if pozycje_x[i] < pozycje_y[j]:
        i += 1
    else:
        j += 1

return min_odl