Implementando un algoritmo para determinar si una cadena tiene todos los caracteres únicos [cerrado]
Contexto: soy un CS n00b trabajando a través de "Cracking the Coding Interview". El primer problema pide "implementar un algoritmo para determinar si una cadena tiene todos los caracteres únicos". Mi implementación (probablemente ingenua) es la siguiente:
def isUniqueChars2(string):
uchars = []
for c in string:
if c in uchars:
return False
else:
uchars.append(c)
return True
El autor sugiere la siguiente implementación:
def isUniqueChars(string):
checker = 0
for c in string:
val = ord(c) - ord('a')
if (checker & (1 << val) > 0):
return False
else:
checker |= (1 << val)
return True
¿Qué hace que la implementación del autor sea mejor que la mía (FWIW, la solución del autor estaba en Java y la convertí a Python? ¿Es mi solución una que no se puede implementar en Java)? O, más generalmente, ¿qué es deseable en una solución a este problema? ¿Qué hay de malo con el enfoque que he tomado? Supongo que hay algunos conceptos fundamentales de CS (con los que no estoy familiarizado) que son importantes y ayudan a informar la elección de qué enfoque abordar este problema.