मान लीजिए कि हमारे पास शब्दों की एक सूची और एक पैटर्न है, और हमें यह पता लगाना है कि शब्दों में कौन से शब्द पैटर्न से मेल खाते हैं। यहां एक शब्द पैटर्न से मेल खाता है यदि अक्षर p का क्रमपरिवर्तन मौजूद है ताकि पैटर्न में प्रत्येक अक्षर x को p(x) से बदलने के बाद, हमें लक्ष्य शब्द मिल जाए। हमें दिए गए पैटर्न से मेल खाने वाले शब्दों में शब्दों की एक सूची ढूंढनी है।
उदाहरण के लिए, यदि इनपुट ["abc",,"deq",,"mee",,"aqq",,"dkd",,"ccc"] जैसा है और पैटर्न "abb" है, तो आउटपुट ["mee" होगा) , "aqq"], यहाँ mee और aqq पैटर्न "abb" की शैली से मेल खाते हैं। लेकिन "सीसीसी" एक पैटर्न नहीं है, क्योंकि यह क्रमपरिवर्तन नहीं है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक कन्वर्ट () विधि को परिभाषित करें। यह इनपुट के रूप में शब्द लेगा, यह कार्य करेगा -
- काउंटर:=1, s:=खाली स्ट्रिंग
- s :=s + काउंटर के बराबर स्ट्रिंग
- i के लिए 1 से लेकर शब्द की लंबाई तक - 1
- j :=i – 1
- जबकि j>=0
- यदि शब्द[j] शब्द है[i], तो तोड़ें
- j को 1 से घटाएं
- अगर j> -1, तो s :=s + s[j], अन्यथा काउंटर को 1 और s :=s + काउंटर वैल्यू को स्ट्रिंग के रूप में बढ़ाएं
- वापसी
- वास्तविक विधि इस तरह होगी
- एक सरणी को word_num बनाएं, और यह खाली है, एक और खाली सरणी res बनाएं
- प्रत्येक तत्व के लिए i शब्दों में −
- रूपांतरित करें(i) word_num में डालें
- पैटर्न:=कन्वर्ट (पैटर्न)
- मैं के लिए 0 से लेकर शब्दों की लंबाई तक - 1
- अगर शब्द_नम[i] =पैटर्न, फिर शब्दों [i] को रेस में डालें
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def findAndReplacePattern(self, words, pattern): words_num = [] result = [] for i in words: words_num.append(self.convert(i)) pattern = self.convert(pattern) for i in range(len(words)): if words_num[i] == pattern: result.append(words[i]) return result def convert(self,word): counter = 1 s = "" s+=str(counter) for i in range(1,len(word)): j= i -1 while j>=0: if word[j] == word[i]: break j-=1 if j >-1: s+=s[j] else: counter+=1 s+=str(counter) return s ob = Solution() print(ob.findAndReplacePattern(["abc","deq","mee","aqq","dkd","ccc"],"abb"))
इनपुट
["abc","deq","mee","aqq","dkd","ccc"] "abb"
आउटपुट
['mee', 'aqq']