মান ল করুন একটি s স্ট্রিং, আমাদের সর্বোচ্চ দৈর্ঘ্যের সাবস্ট্রিং খুঁজে বের করতে হবে যাতে তাতে hoogstens ২টি ডিস্টিন্ক্ট ক্যারেক্টার থাকে।
যদি ইনপুট হয় s = "xyzzy", তবে আউটপুট হবে ৪, কারণ "yzzy" হল hoogstens ২টি ইউনিক ক্যারেক্টার বিশিষ্ট সর্বোচ্চ সাবস্ট্রিং।
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:
- start := 0
- c := একটি ম্যাপ (Counter)
- ans := 0
- end কে ০ থেকে 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 := max(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