কম্পিউটার

পাইথনে একক ঘূর্ণনের পরে দীর্ঘতম প্যালিনড্রোমিক সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে, যেটিকে আমরা যেকোন বিন্দুতে ঠিক একবার ঘোরাতে পারি। এই অপারেশনটি করার মাধ্যমে আমরা পেতে পারি এমন দীর্ঘতম প্যালিনড্রোমিক সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে৷

সুতরাং, ইনপুট যদি s ="elklev" এর মত হয়, তাহলে আউটপুট হবে 7, যেহেতু আমরা "levelk" পেতে "el" এবং "klev" এর মধ্যে ঘোরাতে পারি। তাই এখানে দীর্ঘতম প্যালিনফ্রোমিক সাবস্ট্রিং দৈর্ঘ্য 5।

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

  • s2 :=s দুবার সংযুক্ত করুন

  • max_len :=0

  • 0 থেকে s − 1 এর পরিসরে x এর জন্য, করুন

    • y এর জন্য 0 থেকে s এর আকারের মধ্যে, করুন

      • temp :=s2 [সূচী x থেকে x + y]

      • যদি temp প্যালিনড্রোম হয় এবং temp> max_len এর আকার হয়, তাহলে

        • max_len :=তাপমাত্রার আকার

  • রিটার্ন max_len

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

উদাহরণ

class Solution:
   def solve(self, s):
      s2 = 2 * s
      max_len = 0
      for x in range(len(s)):
         for y in range(len(s) + 1):
            temp = s2[x : x + y]
            if temp == temp[::−1] and len(temp) > max_len:
               max_len = len(temp)
      return max_len
ob = Solution()
s = "elklev"
print(ob.solve(s))

ইনপুট

"elklev"

আউটপুট

5

  1. পাইথনে দীর্ঘতম স্বতন্ত্র সাবলিস্টের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে দীর্ঘতম ধারাবাহিক অনুক্রমের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দীর্ঘতম অ্যানাগ্রাম অনুগামীর দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে দীর্ঘতম প্যালিনড্রোমিক সাবস্ট্রিং