ধরুন আমরা একটি ছোট হাতের স্ট্রিং 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)
- যদি c "?" এর মত হয়, তাহলে
- ম্যাক্সলেন রিটার্ন করুন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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