From 31f89dd4f59743bf72f7183c0f8bcd1542748ddb Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Tue, 25 Aug 2026 14:24:35 -0400 Subject: [PATCH] docs(docs): rename variable to window and add Longest Repeating Character Replacement page --- ...substring-without-repeating-characters.mdx | 8 ++-- ...ongest-repeating-character-replacement.mdx | 47 +++++++++++++++++++ 2 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 apps/docs/content/(hash-table)/424-longest-repeating-character-replacement.mdx diff --git a/apps/docs/content/(hash-table)/3-longest-substring-without-repeating-characters.mdx b/apps/docs/content/(hash-table)/3-longest-substring-without-repeating-characters.mdx index b0f4f83..c5fbe45 100644 --- a/apps/docs/content/(hash-table)/3-longest-substring-without-repeating-characters.mdx +++ b/apps/docs/content/(hash-table)/3-longest-substring-without-repeating-characters.mdx @@ -35,12 +35,12 @@ class Solution: def lengthOfLongestSubstring(self, s: str) -> int: left = 0 ans = 0 - seen = set() + window = set() for right, c in enumerate(s): - while c in seen: - seen.remove(s[left]) + while c in window: + window.remove(s[left]) left += 1 - seen.add(c) + window.add(c) ans = max(ans, right - left + 1) return ans diff --git a/apps/docs/content/(hash-table)/424-longest-repeating-character-replacement.mdx b/apps/docs/content/(hash-table)/424-longest-repeating-character-replacement.mdx new file mode 100644 index 0000000..c807620 --- /dev/null +++ b/apps/docs/content/(hash-table)/424-longest-repeating-character-replacement.mdx @@ -0,0 +1,47 @@ +--- +title: '424. Longest Repeating Character Replacement' +description: You are given a string s and an integer k. You can choose any character of the string and change it to any other uppercase English character. You can perform this operation at most k times +sidebar: + label: 'Longest Repeating Character Replacement' + badge: 'Medium' +--- + +Sliding Window + +### Example 1: +- Input: `s = "ABAB", k = 2` +- Output: `4` +- Explanation: Replace the two 'A's with two 'B's or vice versa. + +### Example 2: +- Input: `s = "AABABBA", k = 1` +- Output: `4` +- Explanation: Replace the one 'A' in the middle with 'B' and form "AABBBBA". The substring "BBBB" has the longest repeating letters, which is `4`. There may exists other ways to achieve this answer too. + +### Constraints: + +- `1 <= s.length <= 10^5` +- `s` consists of only uppercase English letters. +- `0 <= k <= s.length` + +## Solution + +```py +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + count = {} + res = 0 + + l = 0 + maxF = 0 + for r, c in enumerate(s): + count[c] = 1 + count.get(c, 0) + maxF = max(maxF, count[c]) + + while (r - l + 1) - maxF > k: + count[s[l]] -= 1 + l += 1 + + res = max(res, r - l + 1) + return res +```