Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में पैटर्न खोजें और बदलें

मान लीजिए कि हमारे पास शब्दों की एक सूची और एक पैटर्न है, और हमें यह पता लगाना है कि शब्दों में कौन से शब्द पैटर्न से मेल खाते हैं। यहां एक शब्द पैटर्न से मेल खाता है यदि अक्षर 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']

  1. सेलेनियम और पायथन तत्वों और पाठ को खोजने के लिए?

    हम सेलेनियम वेबड्राइवर के साथ तत्वों और उसके पाठ को पा सकते हैं। सबसे पहले हमें किसी भी लोकेटर जैसे आईडी, क्लासनाम, सीएसएस आदि की मदद से तत्व की पहचान करनी होगी। फिर पाठ प्राप्त करने के लिए हमें पाठ . की सहायता लेनी होगी विधि। सिंटैक्स s = driver.find_element_by_css_selector("h4").text यह

  1. पायथन में O(n) समय और O(1) स्थान में BST का माध्यिका ज्ञात कीजिए

    मान लीजिए कि हमारे पास बाइनरी सर्च ट्री (BST) है, तो हमें इसका माध्यिका ज्ञात करना होगा। हम नोड्स की सम संख्या के लिए जानते हैं, माध्यिका =((n/2th नोड + (n+1)/2th नोड) /2 विषम संख्या में नोड्स के लिए, माध्यिका =(n+1)/2th नोड। तो, अगर इनपुट पसंद है तो आउटपुट 7 . होगा इसे हल करने के लिए, हम इन चर

  1. पायथन में ओपनसीवी का उपयोग करके समोच्च खोजें और ड्रा करें

    छवि विश्लेषण के उद्देश्य से हम Opencv (ओपन सोर्स कंप्यूटर विज़न लाइब्रेरी) पायथन लाइब्रेरी का उपयोग करते हैं। लाइब्रेरी का नाम जिसे opencv इंस्टाल करने के बाद इम्पोर्ट करना होता है cv2 है। नीचे दिए गए उदाहरण में हम एक छवि फ़ाइलों में मौजूद आकृति पाते हैं। आकृति हमें छवि में मौजूद आकृतियों की पहचान