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.