কম্পিউটার

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


ধরুন আমরা একটি ছোট হাতের স্ট্রিং s আছে. এতে ইংরেজি বর্ণের পাশাপাশি "?" প্রতীক। প্রতিটির জন্য "?" আমাদের হয় এটি অপসারণ করতে হবে বা যেকোনো ছোট হাতের অক্ষর দিয়ে প্রতিস্থাপন করতে হবে। আমাদেরকে দীর্ঘতম ক্রমাগত ক্রমবর্ধমান সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে যা "a" অক্ষর দিয়ে শুরু হয়।

সুতরাং, যদি ইনপুটটি s ="vta???defke" এর মত হয়, তাহলে আউটপুট হবে 6, কারণ আমরা s কে "vtabcdefke" তে পরিণত করতে পারি এবং "abcdef" হল দীর্ঘতম ক্রমাগত বর্ধিত সাবস্ট্রিং, এবং এটিও শুরু হচ্ছে "a"।

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

  • maxlen :=0
  • দৈর্ঘ্য :=0
  • qmarks :=0
  • s-এ প্রতিটি c-এর জন্য, করুন
    • যদি c "?" এর মত হয়, তাহলে
      • qmarks :=qmarks + 1
    • অন্যথায়,
      • idx :=(গ এর ASCII) - ("a" এর ASCII)
      • দৈর্ঘ্য :=idx + 1 যদি দৈর্ঘ্য <=idx <=length + qmarks বা idx <=qmarks অন্যথায় 0
      • qmarks :=0
    • maxlen :=maxlen এর সর্বোচ্চ এবং (ন্যূনতম দৈর্ঘ্য + qmarks এবং 26)
  • ম্যাক্সলেন রিটার্ন করুন

উদাহরণ

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

def solve(s):
   maxlen = length = qmarks = 0
   for c in s:
      if c == "?":
         qmarks += 1
      else:
         idx = ord(c) - ord("a")
         length = idx + 1 if length <= idx <= length + qmarks or idx <= qmarks else 0
         qmarks = 0
      maxlen = max(maxlen, min(length + qmarks, 26))
   return maxlen

s = "vta???defke"
print(solve(s))

ইনপুট

"vta???defke"

আউটপুট

6

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

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

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

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