반응형

python anagram 


테스트 환경 : windows 7 64 bit, python 2.7.5


참고 : https://docs.python.org/2/library/timeit.html


** 문자열 a ('listen') 와 b ('silent') 가 anagram 인지 확인하는 프로그램 

     -- 단어 단위만 검사함.  따라서 공백은 제외 시킴.

 
# -*- coding: euc-kr -*-

def analysis_str(txt, str_counter_list):
    for x in txt:
        # 각각 문자에 해당하는 counter 증가
        idx = (ord(x.lower()) - ord('a'))%26  # 대문자인경우 소문자로 전환하여 계산!
        str_counter_list[idx] += 1  # count 증가  --  ex) 'a' -> alpha[0] 값에 1 더한다.


def main():
    alpha_1 = [0]*26   # a - z 해당 count 기록, 대소문자 구분 없다.
    alpha_2 = [0]*26   

    a = 'listen'
    b = 'silent'

    if len(a) != len(b):  # 길이 다르면 종료!
        print 'Not anagram'
    else:
        analysis_str(a, alpha_1)
        analysis_str(b, alpha_2)

        # print alpha_1
        # print alpha_2

        if alpha_1 == alpha_2:
            print 'Ok anagram'
        else:
            print 'Not anagram'


if __name__ == '__main__':
    import timeit

    # number=10 --> 10번 실행 ,   default : number=1000000 (백만번 실행)
    print(timeit.timeit("main()", setup = "from __main__ import main", number=10))
	




<결과>





반응형
Posted by 자유프로그램
,