█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 2019

Problema 0x5c - Decir si hay una letra repetida

  • Autor: abatesins
  • Fecha: 2020-11-17 11:20:26 UTC (Hace alrededor de 4 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.022 s 3 KBi
#2
Incorrecto
0.02 s 3 KBi
#3
Incorrecto
0.023 s 3 KBi
#4
Correcto
0.02 s 3 KBi
#5
Correcto
0.029 s 3 KBi
#6
Correcto
0.024 s 3 KBi
#7
Correcto
0.026 s 3 KBi
#8
Correcto
0.024 s 3 KBi
#9
Correcto
0.027 s 3 KBi
#10
Correcto
0.022 s 3 KBi
#11
Correcto
0.02 s 3 KBi
#12
Correcto
0.023 s 3 KBi
Puntos totales: 84 / 100

Código

word = input()

# solvable with len(set(word)) == len(word) which relies on hashes so, here's a more explicit and simple version.

# 512 is enough for strings on the a-z to not collide when using hash() and modulo
HT_LEN = 512 
hash_tbl = [False] * HT_LEN

repeated = 'yes'
for char in word:
  idx = hash(char) % HT_LEN
  if hash_tbl[idx]:
    break
  else:
    hash_tbl[idx] = True
else:
  repeated = 'no'

print(repeated)