কম্পিউটার

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


ধরুন আমাদের একটি ছোট হাতের স্ট্রিং s আছে, আমাদেরকে s-এ কমপক্ষে দুইবার হওয়া দীর্ঘতম সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে। যদি আমরা এই ধরনের স্ট্রিং খুঁজে না পাই, 0 ফেরত দিন।

সুতরাং, যদি ইনপুটটি s ="abdgoalputabdtypeabd" এর মত হয়, তাহলে আউটপুট হবে 3, কারণ দীর্ঘতম সাবস্ট্রিং যা একাধিকবার হয় তা হল "abd"।

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

  • একটি ফাংশন lcs() সংজ্ঞায়িত করুন। এটি s1, s2
  • লাগবে৷
  • n :=সর্বনিম্ন আকার s1 এবং আকার s2
  • আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
    • যদি s1[i] s2[i] এর মত না হয়, তাহলে
      • s1-এর রিটার্ন সাবস্ট্রিং[সূচী 0 থেকে i-1]
  • s1-এর রিটার্ন সাবস্ট্রিং[সূচী 0 থেকে n - 1]
  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
  • প্রত্যয় :=একটি নতুন তালিকা
  • n :=s এর আকার
  • max_len :=0
  • আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
    • প্রত্যয় শেষে সন্নিবেশ করান (s[সূচী i থেকে n - 1] এর সাবস্ট্রিং)
  • তালিকা প্রত্যয়গুলি সাজান
  • প্রতিটি আইটেমের জন্য a থেকে প্রত্যয় এবং b প্রত্যয়গুলির সাবস্ট্রিং থেকে [সূচী 1 থেকে শেষ পর্যন্ত], করুন
    • rtr :=lcs(a, b)
    • যদি rtr> max_len এর আকার হয়, তাহলে
      • max_len :=rtr এর আকার
  • প্রত্যাবর্তন max_len

উদাহরণ

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

def lcs(s1, s2):
   n = min(len(s1), len(s2))

   for i in range(n):
      if s1[i] != s2[i]:
         return s1[:i]
   return s1[:n]

def solve(s):
   suffixes = []
   n = len(s)
   max_len = 0

   for i in range(n):
      suffixes.append(s[i:n])

   suffixes.sort()

   for a, b in zip(suffixes, suffixes[1:]):
      rtr = lcs(a, b)

      if len(rtr) > max_len:
         max_len = len(rtr)

   return max_len

s = "abdgoalputabdtypeabd"
print(solve(s))

ইনপুট

"abdgoalputabdtypeabd"

আউটপুট

3

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

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

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

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