世界で闘うプログラミング力を鍛える本 −コーディング面接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)))






コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です