Implementacja algorytmu do określenia, czy ciąg ma wszystkie unikalne znaki [zamknięte]

Kontekst: Jestem CS n00b pracujący na zasadzie „Cracking the Coding Interview”. Pierwszy problem polega na „zaimplementowaniu algorytmu w celu określenia, czy ciąg ma wszystkie unikalne znaki”. Moja (prawdopodobnie naiwna) implementacja wygląda następująco:

def isUniqueChars2(string):
  uchars = []
  for c in string:
    if c in uchars:
      return False
    else:
      uchars.append(c)
  return True

Autor sugeruje następującą implementację:

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

Co sprawia, że ​​implementacja autora jest lepsza niż moja (FWIW, autorskie rozwiązanie w Javie i przekonwertowałem na Pythona - czy moje rozwiązanie nie jest możliwe do zaimplementowania w Javie)? Lub, bardziej ogólnie, co jest pożądane w rozwiązaniu tego problemu? Co jest nie tak z podejściem, które podjąłem? Zakładam, że istnieją pewne podstawowe pojęcia CS (których nie znam), które są ważne i pomagają w wyborze podejścia do tego problemu.

questionAnswers(3)

yourAnswerToTheQuestion