কম্পিউটার

পাইথনে প্যাটার্ন খুঁজুন এবং প্রতিস্থাপন করুন


ধরুন আমাদের কাছে শব্দের একটি তালিকা এবং একটি প্যাটার্ন রয়েছে এবং আমাদের খুঁজে বের করতে হবে যে শব্দের কোন শব্দ প্যাটার্নের সাথে মেলে। এখানে একটি শব্দ প্যাটার্নের সাথে মিলে যায় যদি p অক্ষরগুলির একটি স্থানান্তর বিদ্যমান থাকে যাতে প্যাটার্নের প্রতিটি অক্ষর xকে p(x) দিয়ে প্রতিস্থাপন করার পরে, আমরা লক্ষ্য শব্দটি পাই। প্রদত্ত প্যাটার্নের সাথে মেলে এমন শব্দের শব্দগুলির একটি তালিকা আমাদের খুঁজে বের করতে হবে৷

সুতরাং উদাহরণস্বরূপ, যদি ইনপুটটি ["abc","deq","mee","aqq","dkd","ccc"] এর মত হয় এবং প্যাটার্ন হয় "abb", তাহলে আউটপুট হবে ["mee" , "aqq"], এখানে mee এবং aqq প্যাটার্ন "abb" এর শৈলীর সাথে মিলে যাচ্ছে। কিন্তু "ccc" একটি প্যাটার্ন নয়, কারণ এটি একটি পারমুটেশন নয়৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি রূপান্তর() পদ্ধতি সংজ্ঞায়িত করুন। এটি শব্দটিকে ইনপুট হিসাবে গ্রহণ করবে, এটি −
  • এর মত কাজ করবে
  • কাউন্টার :=1, s :=খালি স্ট্রিং
  • s :=s + কাউন্টারের সমতুল্য স্ট্রিং
  • আমি পরিসীমা 1 থেকে শব্দের দৈর্ঘ্য - 1
    • j :=i – 1
    • যখন j>=0
      • যদি [j] শব্দ হয় [i], তাহলে বিরতি করুন
      • j 1 দ্বারা কমিয়ে দিন
    • যদি j> -1 হয়, তাহলে s :=s + s[j], অন্যথায় 1 দ্বারা কাউন্টার বাড়ান এবং s :=s + স্ট্রিং হিসাবে কাউন্টার মান বাড়ান
  • রিটার্ন এস
  • প্রকৃত পদ্ধতিটি এরকম হবে
  • একটি অ্যারে শব্দ_সংখ্যা তৈরি করুন, এবং এটি খালি, আরেকটি খালি অ্যারে রেস তৈরি করুন
  • প্রতিটি উপাদানের জন্য i শব্দে −
    • কনভার্ট(i)কে word_num এ সন্নিবেশ করুন
  • প্যাটার্ন :=রূপান্তর(প্যাটার্ন)
  • আমার জন্য 0 থেকে শব্দের দৈর্ঘ্য - 1
    • যদি word_num[i] =প্যাটার্ন, তাহলে res-এ শব্দ[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. পাইথনে প্যাটার্ন কিভাবে প্রিন্ট করবেন?

  2. সেলেনিয়াম এবং পাইথন উপাদান এবং পাঠ্য খুঁজে পেতে?

  3. পাইথনে O(n) সময়ে BST এবং O(1) স্থানের মধ্যমা খুঁজুন

  4. পাইথনে OpenCV ব্যবহার করে কনট্যুর খুঁজুন এবং আঁকুন