কম্পিউটার টিউটোরিয়াল

পাইথনে ফাইন্ড অ্যান্ড রিপ্লেস প্যাটার্ন

একটি ওয়ার্ডস লিস্ট এবং একটি প্যাটার্ন দেওয়া আছে। ওয়ার্ডস লিস্টের কোন ওয়ার্ডগুলো প্যাটার্নের সাথে মেলে তা বের করতে হবে। একটি ওয়ার্ড প্যাটার্নের সাথে মেলে যদি অক্ষরগুলির একটি পারমুটেশন p থাকে যাতে প্যাটার্নের প্রতিটি x কে p(x) দিয়ে রিপ্লেস করলে টার্গেট ওয়ার্ড পাওয়া যায়।

ইনপুট ["abc","deq","mee","aqq","dkd","ccc"] এবং pattern "abb" হলে আউটপুট ["mee", "aqq"]। "ccc" মেলে না কারণ এটি পারমুটেশন নয়।

সমাধানের ধাপসমূহ

  • convert() মেথড ডিফাইন করুন যা ওয়ার্ড নেয়:
    • counter := 1, s := খালি স্ট্রিং
    • s += counter স্ট্রিং
    • i = 1 থেকে len(word)-1 পর্যন্ত:
      • j := i-1
      • যখন j >= 0: যদি word[j] == word[i] ব্রেক, j--
      • যদি j > -1: s += s[j], অন্যথায় counter++, s += counter স্ট্রিং
    • s রিটার্ন
  • words_num := খালি অ্যারে, res := খালি অ্যারে
  • words-এ প্রতিটি i-এর জন্য convert(i) words_num-এ অ্যাড
  • pattern := convert(pattern)
  • words-এ লুপ: যদি words_num[i] == pattern, words[i] res-এ অ্যাড
  • res রিটার্ন

উদাহরণ

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. পাইথনে BST-এর মেডিয়ান O(n) সময় এবং O(1) স্পেসে বের করা

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