इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे।
समस्या कथन - एक टेक्स्ट और एक पैटर्न को देखते हुए, हमें टेक्स्ट में पैटर्न और उसके क्रमपरिवर्तन (या विपर्यय) की सभी घटनाओं को प्रिंट करना होगा।
आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें -
उदाहरण
# 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

सभी चर स्थानीय दायरे में घोषित किए गए हैं और उनके संदर्भ ऊपर दिए गए चित्र में देखे गए हैं।
निष्कर्ष
इस लेख में, हमने सीखा है कि हम एनाग्राम सबस्ट्रिंग सर्च के लिए पायथन प्रोग्राम कैसे बना सकते हैं।