அல்கோரிதம்expansion

Window expansion — valid region வளர்த்தல்

TT
Testlaa Team
May 14, 20261 min read

Expansion: condition வரை window வளர்த்து, பிறகு மறுமுனையில் சுருக்கம் (sliding window).

Try this in Python

def max_len_substring_k_distinct(s: str, k: int) -> int:
    from collections import Counter

    left = 0
    best = 0
    cnt = Counter()
    for right, ch in enumerate(s):
        cnt[ch] += 1
        while len(cnt) > k:
            cnt[s[left]] -= 1
            if cnt[s[left]] == 0:
                del cnt[s[left]]
            left += 1
        best = max(best, right - left + 1)
    return best


print(max_len_substring_k_distinct("eceba", 2))

Key takeaways

  • right விரிவு, invalid வரை left சுருக்கம்.
  • Frequency map.
  • Invariant: update போது valid.

Tags:

Two pointersPythonமாணவர்கள்