반응형
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))
<결과>
반응형
'python' 카테고리의 다른 글
bioinfomatics -- vienna format 으로 RNA 그리기 (0) | 2014.09.02 |
---|---|
python -- self, 클래스멤버(변수) , 인스턴스멤버(변수), 생성자, 소멸자 (0) | 2014.08.27 |
python 으로 github api v3 접근하기 -- httplib (0) | 2014.08.22 |
base64 encoding , decoding (0) | 2014.08.21 |
PyGithub 으로 github 주무르기 (0) | 2014.08.21 |