मान लीजिए हमारे पास केवल अंग्रेजी स्वरों वाली एक स्ट्रिंग s है, हमें s के सबसे लंबे सुंदर सबस्ट्रिंग की लंबाई ढूंढनी है। यदि हमें ऐसा सबस्ट्रिंग नहीं मिलता तो 0 लौटाएं। एक स्ट्रिंग को सुंदर कहा जाता है यदि यह निम्न शर्तों को पूरा करती है:
इसमें सभी 5 स्वर कम से कम एक बार आने चाहिए।
अक्षर वर्णमाला क्रम में क्रमबद्ध होने चाहिए।
उदाहरण के लिए, यदि इनपुट है s = "aaioaaaaeiiouuooaauu", तो आउटपुट 10 होगा क्योंकि सबस्ट्रिंग "aaaaeiiouu" सुंदर है।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्न चरणों का पालन करेंगे:
vowels := सभी स्वरों की सूची ['a', 'e', 'i', 'o', 'u']
l := 0, r := 0, longest := 0
जब तक l < s का आकार, तब तक
valid := True
vowels में प्रत्येक vowel के लिए
valid := valid सत्य है और (r < s का आकार और s[r], vowel के समान है)
जब तक r < s का आकार और s[r], vowel के समान है, तब तक r := r + 1
यदि valid सत्य है, तो longest := max(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