इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे।
समस्या कथन
हमें एक टेक्स्ट और एक पैटर्न दिया गया है, हमें पैटर्न और उसके क्रमपरिवर्तन (या एनाग्राम) की सभी घटनाओं को टेक्स्ट में प्रिंट करना है।
उदाहरण
# अधिकतम मान
MAX = 300
# तुलना
def compare(arr1, arr2):
for i in range(MAX):
if arr1[i] != arr2[i]:
return False
return True
# खोज
def search(pat, txt):
M = len(pat)
N = len(txt)
# countP पैटर्न खाता
# countTW टेक्स्ट विंडो काउंट
countP = [0]*MAX
countTW = [0]*MAX
for i in range(M):
(countP[ord(pat[i])]) += 1
(countTW[ord(txt[i])]) += 1
# ट्रैवर्सल
for i in range(M, N):
# वर्तमान विंडो और पैटर्न काउंट की तुलना करें
if compare(countP, countTW):
print("Found at Index", (i-M))
# विंडो में कैरेक्टर जोड़ें
(countTW[ord(txt[i])]) += 1
# विंडो से कैरेक्टर हटाएं
(countTW[ord(txt[i-M])]) -= 1
# अंतिम विंडो के लिए जांचें
if compare(countP, countTW):
print("It is Found at Index:", N-M)
# मुख्य
txt = "TUTORIALSPOINT"
pat = "TOR"
search(pat, txt)
आउटपुट
Found at Index 2
निष्कर्ष
इस लेख में हमने एनाग्राम सबस्ट्रिंग खोज के पायथन प्रोग्राम के बारे में सीखा।