কম্পিউটার

পাইথনে দীর্ঘতম খণ্ডিত প্যালিনড্রোম পচন


ধরুন আমাদের একটি টেক্সট আছে। আমাদের সবচেয়ে বড় সম্ভাব্য k খুঁজে বের করতে হবে যাতে সেখানে a[1], a[2], ..., a[k] থাকে যেমন:প্রতিটি a[i] একটি অ-খালি স্ট্রিং; তাদের সংযুক্তি a[1] + a[2] + ... + a[k] প্রদত্ত পাঠ্যের সমান; 1 থেকে k রেঞ্জের সকলের জন্য, a[i] =a[{k+1 - i}]।

সুতরাং, যদি ইনপুটটি "antaprezatepzapreanta" এর মত হয়, তাহলে আউটপুট হবে 11, কারণ আমরা এটিকে "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)( এর মত বিভক্ত করতে পারি। a)(nt)(a)।"

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

  • শুরু :=0, শেষ :=পাঠ্যের দৈর্ঘ্য - 1

  • খালি স্ট্রিং দিয়ে temp1 এবং temp2 শুরু করুন

  • ans =1 যখন পাঠ্যের দৈর্ঘ্য বিজোড় হয়, অন্যথায় 0

  • শুরু করার সময়

    • temp1 :=temp1 + পাঠ্য[শুরু]

    • temp2 :=text[end] + temp2

    • যদি temp1 temp2 এর মত হয়, তাহলে −

      • temp1 এবং temp2 খালি স্ট্রিং হিসাবে সেট করুন

      • ans :=ans + 2

    • start :=start + 1

    • শেষ :=শেষ - 1

  • যদি পাঠ্যের দৈর্ঘ্য সমান হয় এবং (temp1 বা temp2 খালি না হয়)

    • ans :=ans + 1

  • উত্তর ফেরত দিন

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

উদাহরণ

class Solution(object):
   def longestDecomposition(self, text):
      start = 0
      end = len(text)-1
      temp1 = ""
      temp2 = ""
      ans = 1 if len(text) & 1 else 0
      while start<end:
         temp1+=text[start]
         temp2 = text[end]+temp2
         if temp1 == temp2:
            temp1 = temp2 = ""
            ans+=2
         start+=1
         end-=1
      if len(text)%2 == 0 and(temp1 or temp2):
         ans += 1
      return ans
ob = Solution()
print(ob.longestDecomposition("antaprezatepzapreanta"))

ইনপুট

"antaprezatepzapreanta"

আউটপুট

11

  1. পাইথনে প্যালিনড্রোম লিঙ্কড তালিকা

  2. পাইথনে বৈধ প্যালিনড্রোম

  3. পাইথনে দীর্ঘতম সাধারণ উপসর্গ

  4. পাইথনে প্যালিনড্রোম নম্বর