मान लीजिए कि हमारे पास एक स्ट्रिंग है, हमें सबसे लंबे सबस्ट्रिंग की लंबाई का पता लगाना है जिसमें कम से कम 2 अलग-अलग वर्ण हों।
इसलिए, यदि इनपुट s ="xyzzy" जैसा है, तो आउटपुट 4 होगा, क्योंकि "yzzy" अधिकतम 2 अद्वितीय वर्णों के साथ सबसे लंबा विकल्प है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे-
-
प्रारंभ:=0
-
c :=एक नक्शा
-
उत्तर :=0
-
0 से लेकर s के आकार के अंत के लिए, करें
-
c[s[end]] :=c[s[end]] + 1
-
जबकि c> 2 का आकार, करें
-
सी [एस [शुरू]]:=सी [एस [शुरू]] - 1 पी>
-
अगर c[s[start]] 0 है, तो
-
c[s[start]]
delete हटाएं
-
-
प्रारंभ:=प्रारंभ + 1
-
-
उत्तर:=अधिकतम उत्तर और (अंत - प्रारंभ + 1)
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): from collections import Counter start = 0 c = Counter() ans = 0 for end in range(len(s)): c[s[end]] += 1 while len(c) > 2: c[s[start]] -= 1 if not c[s[start]]: del c[s[start]] start += 1 ans = max(ans, end - start + 1) return ans ob = Solution() s = "xyzzy" print(ob.solve(s))
इनपुट
s = "xyzzy"
आउटपुट
4