世界で闘うプログラミング力を鍛える本 −コーディング面接189問とその解法−
問題 1.1 for python3
・ASCII文字コードは128文字(7ビット)であることを,知っていることが前提となる解法を紹介します.
・128個の要素を持つ配列を用意し,0で初期化します.
・文字を探索するたびに,その配列を参照し,0であれば True(1)に書き換え,すでに 1に書き換えられている場合は,同じ文字の2度目の出現となりますのでFalseを返します.
def isUniqueChars(string):
if len(string) > 128:
return False
char_set = [ 0 for i in range(128) ]
for i in range(len(string)):
val = ord(string[i])
if char_set[val]:
return False
char_set[val] = True
return True
if __name__ == "__main__":
words = ['abcde', 'hello', 'apple', 'kite', 'padle']
for w in words:
print(w + ':' + str(isUniqueChars(w)))