কম্পিউটার টিউটোরিয়াল

Python-এ অর্ডার মেনটেইন করে সব স্বরের দীর্ঘতম সাবস্ট্রিং বের করা


মনে করুন s শুধু ইংরেজি স্বর সহ একটি স্ট্রিং। আমাদের s-র সবচেয়ে লম্বা সুন্দর সাবস্ট্রিংর দৈর্ঘ্য বের করতে হবে। যদি এমন কোনো সাবস্ট্রিং না পাই তবে 0 রিটার্ন করুন। একটি স্ট্রিংকে সুন্দর বলা হয় যদি এটি নিচের শর্তগুলো পূরণ করে −

  • ৫টি স্বর প্রত্যেকটি কমপক্ষে একবার উপস্থিত থাকতে হবে।

  • লেটারগুলো আলফাবেটিক্যাল ক্রমে সাজানো থাকতে হবে।

সুতরাং, যদি ইনপুট হয় s = "aaioaaaaeiiouuooaauu", তবে আউটপুট হবে 10 কারণ সাবস্ট্রিংটি হল "aaaaeiiouu" যা সুন্দর।

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −

  • vowels := সব স্বরের একটি তালিকা ['a', 'e', 'i', 'o', 'u']

  • l := 0, r := 0, longest := 0

  • যতক্ষণ l < s-এর আকার, করুন

    • valid := True

    • vowels-এ প্রতিটি vowel-এর জন্য, করুন

      • valid := valid true এবং (r < s-এর আকার এবং s[r] == vowel)

      • যতক্ষণ r < s-এর আকার এবং s[r] == vowel, করুন

        • r := r + 1

    • যদি valid true হয়, তবে

      • longest := longest এবং (r - l) এর মধ্যে সর্বোচ্চ

    • l := r

  • longest রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −

def solve(s):
    vowels = ['a', 'e', 'i', 'o', 'u']
    l, r, longest = 0, 0, 0
    while (l < len(s)):
        valid = True
        for vowel in vowels:
            valid &= (r < len(s) and s[r] == vowel)
            while (r < len(s) and s[r] == vowel):
                r += 1
        if (valid):
            longest = max(longest, r - l)
        l = r
    return longest

s = "aaioaaaaeiiouuooaauu"
print(solve(s))

ইনপুট

"aaioaaaaeiiouuooaauu"

আউটপুট

10

  1. পাইথনে সব পয়েন্ট কানেক্ট করার ন্যূনতম খরচ বের করার প্রোগ্রাম

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

  3. পাইথনে দেওয়া সংখ্যার সব প্রাইম ফ্যাক্টর বর্ধমান ক্রমে খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে সকল স্বরবর্ণ (vowel) সম্বলিত সাবস্ট্রিং খুঁজে বের করা