ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদেরকে সবচেয়ে দীর্ঘতম সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করতে হবে যাতে প্রায় 2টি স্বতন্ত্র অক্ষর রয়েছে।
সুতরাং, যদি ইনপুটটি s ="xyzzy" এর মত হয়, তাহলে আউটপুট হবে 4, কারণ "yzzy" হল সর্বাধিক 2টি অনন্য অক্ষর সহ দীর্ঘতম সাবস্ট্রিং৷
এটি সমাধান করার জন্য, আমরা এই পদক্ষেপগুলি অনুসরণ করব—
-
শুরু :=0
-
c :=একটি মানচিত্র
-
উত্তর :=0
-
0 থেকে s আকারের পরিসরের শেষের জন্য, করুন
-
c[s[end]] :=c[s[end]] + 1
-
যখন c> 2 এর সাইজ, do
-
c[s[start]] :=c[s[start]] - 1
-
যদি c[s[start]] 0 হয়, তাহলে
-
c[s[start]]
মুছুন
-
-
start :=start + 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