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.

Respuestas a la pregunta(3)

Su respuesta a la pregunta