Sobes.tech
Intern

# Dada uma string composta pelas letras 'X', 'Y' e 'O'. # É necessário encontrar a menor distância entre as letras 'X' e 'Y', # ou retornar 0 se 'X' ou 'Y' estiverem ausentes. # "YY" -> 0 # "XX" -> 0 # "XY" -> 1 # "YOX" -> 2 # "OOOXOOYOXO" -> 2 # "OOOXXOY" -> 2 def distance(string: str) -> int:

sobes.tech IA

Resposta da IA

def distancia(cadeia: str) -> int: # Verificamos a presença de 'X' e 'Y' na cadeia if 'X' not in cadeia ou 'Y' not in cadeia: return 0

posicoes_x = [i for i, ch in enumerate(cadeia) if ch == 'X']
posicoes_y = [i for i, ch in enumerate(cadeia) if ch == 'Y']

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

# Usamos dois ponteiros para procurar a distância mínima
while i < len(posicoes_x) and j < len(posicoes_y):
    dist = abs(posicoes_x[i] - posicoes_y[j])
    if dist < min_dist:
        min_dist = dist

    # Avançamos o ponteiro para encontrar uma distância menor
    if posicoes_x[i] < posicoes_y[j]:
        i += 1
    else:
        j += 1

return min_dist