मान लीजिए कि हमारे पास एक संख्या k और एक अन्य स्ट्रिंग s है, तो हमें सबसे लंबे सबस्ट्रिंग का आकार खोजना होगा जिसमें अधिकतम k भिन्न वर्ण हों।
इसलिए, यदि इनपुट k =3 s ="कोलकाता" जैसा है, तो आउटपुट 4 होगा, क्योंकि 3 अलग-अलग वर्णों वाले दो सबसे लंबे सबस्ट्रिंग हैं, ये "कोल्क" और "काटा" हैं, जिनकी लंबाई 4 है।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उत्तर:=0, बाएँ:=0
-
तालिका:=एक नया नक्शा
-
के लिए दायीं ओर 0 से s -1 के आकार की सीमा में है, do
-
तालिका [एस [दाएं]]:=1 + (एस [दाएं] यदि मौजूद है अन्यथा 0)
-
यदि तालिका का आकार <=k, तो
-
उत्तर:=अधिकतम उत्तर और (दाएं - बाएं + 1)
-
-
अन्यथा,
-
जबकि टेबल का आकार> k, करें
-
left_char :=s[बाएं]
-
यदि तालिका [बाएं_चार] 1 के समान है, तो
-
तालिका से left_char−th तत्व हटाएं
-
-
अन्यथा,
-
तालिका [बाएं_चार]:=तालिका [बाएं_चार] - 1
-
-
बाएँ :=बाएँ + 1
-
-
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution:
def solve(self, k, s):
ans = 0
left = 0
table = {}
for right in range(0, len(s)):
table[s[right]] = table.get(s[right], 0) + 1
if len(table) <= k:
ans = max(ans, right − left + 1)
else:
while len(table) > k:
left_char = s[left]
if table[left_char] == 1:
table.pop(left_char)
else:
table[left_char] −= 1
left += 1
return ans
ob = Solution()
k = 3
s = "kolkata"
print(ob.solve(k, s)) इनपुट
"anewcoffeepot"
आउटपुट
4