मान लीजिए कि हमारे पास स्ट्रिंग s है, हमें सबसे लंबे सबस्ट्रिंग का आकार ज्ञात करना है जिसमें प्रत्येक स्वर सम संख्या में हो। अर्थात्, 'a', 'e', 'i', 'o', और 'u' को सम संख्या में बार-बार आना चाहिए। तो अगर स्ट्रिंग "helloworld" की तरह है, तो आउटपुट 8 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
ret :=0, दो मानचित्र m और cnt परिभाषित करें, m[“00000”] सेट करें:=-1
-
स्वरों को स्वर सरणी में संग्रहित करें
-
मैं के लिए 0 से s के आकार की सीमा में
-
x :=s[i], और ठीक :=false
-
cnt [x] 1 से बढ़ाएँ, अस्थायी सेट करें:=खाली स्ट्रिंग
-
k के लिए 0 से 4 की सीमा में:अस्थायी:=अस्थायी + '0' + cnt [स्वर [k]] मॉड 2
-
यदि m में अस्थायी है, तो ret :=ret का अधिकतम और i – m[temp], अन्यथा m[temp] :=i
-
-
वापसी रिट
उदाहरण (C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: int findTheLongestSubstring(string s) { int ret = 0; map <string, int> m; map <char, int> cnt; m["00000"] = -1; char vowels[5] = {'a', 'e', 'i', 'o', 'u'}; for(int i = 0; i < s.size(); i++){ char x = s[i]; bool ok = false; cnt[x]++; string temp = ""; for(int k = 0; k < 5; k++){ temp+= ('0' + (cnt[vowels[k]] % 2)); } if(m.count(temp)){ ret = max(ret, i - m[temp]); } else{ m[temp] = i; } } return ret; } }; main(){ Solution ob; cout << (ob.findTheLongestSubstring("helloworld")); }
इनपुट
“helloworld”
आउटपुट
8