কম্পিউটার

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


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

সুতরাং, যদি ইনপুটটি s ="anewcoffeepot" এর মত হয়, তাহলে আউটপুট হবে 10, কারণ "wcoffeepot" সাবস্ট্রিং-এ দুটি স্বরবর্ণ "o" এবং "e" আছে, উভয়ই দুইবার হয়।

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

  • স্বরবর্ণ :=একটি মানচিত্র স্বরবর্ণ এবং সংখ্যাসূচক মানগুলিকে {a:0, e:1, i:2, o:3, u:4}

  • উপসর্গ :=একটি খালি মানচিত্র এবং এতে একটি কী-মানের জোড়া (0, −1) সন্নিবেশ করান

  • মুখোশ :=0, n :=s এর আকার, res :=0

  • 0 থেকে n রেঞ্জের জন্য, করুন

    • যদি s[i] একটি স্বরবর্ণ হয়, তাহলে

      • মুখোশ :=মাস্ক XOR (2^vowels[s[i]])

    • যদি মুখোশ উপসর্গে না থাকে, তাহলে

      • উপসর্গ[মাস্ক] :=i

    • অন্যথায়,

      • res :=res এর সর্বোচ্চ এবং (i − উপসর্গ[মাস্ক])

  • রিটার্ন রিটার্ন

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

উদাহরণ

class Solution:
   def solve(self, s):
      vowels = {"a": 0, "e": 1, "i": 2, "o": 3, "u": 4}
      prefix = {0: −1}
      mask = 0
      n = len(s)
      res = 0
      for i in range(n):
         if s[i] in vowels:
            mask ^= 1 << vowels[s[i]]
         if mask not in prefix:
            prefix[mask] = i
         else:
            res = max(res, i − prefix[mask])
      return res
ob = Solution()
s = "anewcoffeepot"
print(ob.solve(s))

ইনপুট

"anewcoffeepot"

আউটপুট

10

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

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

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

  4. পাইথনে ধারাবাহিক সাধারণ অক্ষর সহ সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম