मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें सबसे लंबे सबस्ट्रिंग की लंबाई ढूंढनी है जिसमें अधिकतम 2 विशिष्ट वर्ण हों।
इसलिए, यदि इनपुट s = "xyzzy" जैसा है, तो आउटपुट 4 होगा, क्योंकि "yzzy" अधिकतम 2 अद्वितीय वर्णों वाला सबसे लंबा सबस्ट्रिंग है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे−
start := 0
c := एक मैप
ans := 0
end के लिए 0 से s के आकार तक की रेंज में, करें
c[s[end]] := c[s[end]] + 1
जब तक c का आकार > 2, करें
c[s[start]] := c[s[start]] - 1
यदि c[s[start]], 0 है, तो
c[s[start]] हटाएं
start := start + 1
ans := ans और (end - start + 1) का अधिकतम
ans वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
उदाहरण
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