ধরুন আমাদের কাছে একটি স্ট্রিং 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