반응형
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 |


