কম্পিউটার

রেগুলার এক্সপ্রেশন প্যাটার্ন চেক করার প্রোগ্রাম স্ট্রিং এর সাথে মিলছে নাকি পাইথনে নেই


ধরুন আমাদের একটি স্ট্রিং s এবং একটি রেগুলার এক্সপ্রেশন প্যাটার্ন আছে। প্রদত্ত প্যাটার্নটি প্রদত্ত স্ট্রিংয়ের সাথে মেলে কিনা তা আমাদের পরীক্ষা করতে হবে। রেগুলার এক্সপ্রেশনে, কিছু নিয়ম আছে −

  • . (পিরিয়ড) যা যেকোনো একক অক্ষরের সাথে মেলে

  • * (তারকা) যা শূন্য বা তার বেশি পূর্ববর্তী উপাদানের সাথে মেলে।

সুতরাং, যদি ইনপুট প্যাটার্ন ="h.l*o" s ="hello" এর মত হয়, তাহলে আউটপুট হবে True, যেহেতু আমাদের আছে ra এবং তারপর একটি একক অক্ষর

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

  • n :=s এর আকার

  • m :=p এর আকার

  • একটি ফাংশন dp() সংজ্ঞায়িত করুন। এটি i, j

    লাগবে
  • যদি j m এর মত হয়, তাহলে

    • রিটার্ন i n

      এর মতই
  • ম্যাচ :=সত্য যখন (i

  • যদি j + 1 &m এবং p[j + 1] "*" এর মত হয়, তাহলে

    • dp(i, j + 2) অথবা (match এবং dp(i + 1, j)) অন্যথায় মিথ্যা হলে true ফেরত দিন

  • রিটার্ন ম্যাচ এবং dp(i + 1, j + 1)

  • মূল পদ্ধতি থেকে dp(0, 0)

    রিটার্ন করুন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

class Solution:
   def solve(self, p, s):
      n = len(s)
      m = len(p)
      def dp(i, j):
         if j == m:
            return i == n
         match = i < n and (s[i] == p[j] or p[j] == ".")
         if j + 1 < m and p[j + 1] == "*":
            return dp(i, j + 2) or (match and dp(i + 1, j))
         return match and dp(i + 1, j + 1)
      return dp(0, 0)
ob = Solution()
pattern = "h.l*o"
s = "hello"
print(ob.solve(pattern, s))

ইনপুট

"h.l*o", "hello"

আউটপুট

True

  1. একটি প্রদত্ত স্ট্রিং কীওয়ার্ড কিনা তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  2. স্ট্রিং খালি আছে কি না তা পরীক্ষা করার জন্য পাইথন প্রোগ্রাম

  3. পাইথনে একটি নিয়মিত অভিব্যক্তি কি?

  4. একটি স্ট্রিং আলফানিউমেরিক কিনা তা পরীক্ষা করতে পাইথন রেগুলার এক্সপ্রেশন কী?