Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

아나그램 부분 문자열 검색을 위한 Python 프로그램


이 기사에서는 아래 주어진 문제 설명에 대한 솔루션에 대해 알아볼 것입니다.

문제 설명 − 텍스트와 패턴이 주어지면 텍스트에서 패턴과 그 순열(또는 아나그램)의 모든 발생을 인쇄해야 합니다.

이제 아래 구현에서 솔루션을 관찰해 보겠습니다 -

예시

# maximum value
MAX = 300
# compare
def compare(arr1, arr2):
   for i in range(MAX):
      if arr1[i] != arr2[i]:
         return False
   return True
# search
def search(pat, txt):
   M = len(pat)
   N = len(txt)
   # countP pattern account
   # countTW text window count
   countP = [0]*MAX
   countTW = [0]*MAX
   for i in range(M):
      (countP[ord(pat[i]) ]) += 1
      (countTW[ord(txt[i]) ]) += 1
   # Traversal
   for i in range(M, N):
      # Compare current window and patten counts
      if compare(countP, countTW):
         print("Found at Index", (i-M))
      # Add charcter to window
      (countTW[ ord(txt[i]) ]) += 1
      # remove charcter from window
      (countTW[ ord(txt[i-M]) ]) -= 1
   # Check for the last window
   if compare(countP, countTW):
      print("It is Found at Index : ", N-M)
# main
txt = "TUTORIALSPOINT"
pat = "TOR"
search(pat, txt)

출력

Found at Index 2

아나그램 부분 문자열 검색을 위한 Python 프로그램

모든 변수는 로컬 범위에서 선언되며 해당 참조는 위 그림과 같습니다.

결론

이 기사에서는 Anagram 부분 문자열 검색을 위한 Python 프로그램을 만드는 방법에 대해 배웠습니다.