Sobes.tech
Intern

# Adott egy 'X', 'Y' és 'O' betűkből álló sztring. # Meg kell találni a 'X' és 'Y' betűk közötti legrövidebb távolságot, # vagy 0-t visszaadni, ha 'X' vagy 'Y' hiányzik. # "YY" -> 0 # "XX" -> 0 # "XY" -> 1 # "YOX" -> 2 # "OOOXOOYOXO" -> 2 # "OOOXXOY" -> 2 def distance(string: str) -> int:

sobes.tech MI

Válasz az MI-től

def távolság(string: str) -> int: # Ellenőrizzük, hogy 'X' és 'Y' szerepel-e a sztringben if 'X' not in string or 'Y' not in string: return 0

pozíció_x = [i for i, ch in enumerate(string) if ch == 'X']
pozíció_y = [i for i, ch in enumerate(string) if ch == 'Y']

legkisebb_távolság = float('inf')
i, j = 0, 0

# Két mutató segítségével keressük a legkisebb távolságot
while i < len(pozíció_x) and j < len(pozíció_y):
    távolság = abs(pozíció_x[i] - pozíció_y[j])
    if távolság < legkisebb_távolság:
        legkisebb_távolság = távolság

    # A mutató mozgatásával kisebb távolságot találunk
    if pozíció_x[i] < pozíció_y[j]:
        i += 1
    else:
        j += 1

return legkisebb_távolság