コンテキスト: 私は CS n00b で、「Cracking the Coding Interview」に取り組んでいます。最初の問題は、「文字列に一意の文字がすべて含まれているかどうかを判断するアルゴリズムを実装する」ことです。私の(おそらく素朴な)実装は次のとおりです。
def isUniqueChars2(string):
uchars = []
for c in string:
if c in uchars:
return False
else:
uchars.append(c)
return True
著者は、次の実装を提案しています。
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
著者の実装が私のものよりも優れている理由は何ですか (FWIW、著者のソリューションは Java であり、私はそれを Python に変換しました。私のソリューションは Java で実装することはできません)。または、より一般的に言えば、この問題の解決策として何が望ましいでしょうか? 私が取ったアプローチの何が問題になっていますか?私は、重要であり、この問題に対してどのアプローチをとるかを選択するのに役立ついくつかの基本的な CS 概念 (私がよく知らない) があると想定しています。