From a44e9d7bc84fe0b9bdee5f1a25a6e53c987b9b69 Mon Sep 17 00:00:00 2001 From: Dale Seo <5466341+DaleSeo@users.noreply.github.com> Date: Wed, 22 Apr 2026 21:06:57 -0400 Subject: [PATCH 1/2] longest-repeating-character-replacement --- .../DaleSeo.rs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 longest-repeating-character-replacement/DaleSeo.rs diff --git a/longest-repeating-character-replacement/DaleSeo.rs b/longest-repeating-character-replacement/DaleSeo.rs new file mode 100644 index 000000000..5f4584fc4 --- /dev/null +++ b/longest-repeating-character-replacement/DaleSeo.rs @@ -0,0 +1,27 @@ +// TC: O(n), where n is s.len() +// SC: O(1), fixed 26-slot frequency array +impl Solution { + pub fn character_replacement(s: String, k: i32) -> i32 { + let bytes = s.as_bytes(); + let mut counts = [0i32; 26]; + let mut start = 0usize; + let mut max_freq = 0i32; + let mut result = 0i32; + + for end in 0..bytes.len() { + let idx = (bytes[end] - b'A') as usize; + counts[idx] += 1; + max_freq = max_freq.max(counts[idx]); + + while (end - start + 1) as i32 - max_freq > k { + let left_idx = (bytes[start] - b'A') as usize; + counts[left_idx] -= 1; + start += 1; + } + + result = result.max((end - start + 1) as i32); + } + + result + } +} From d9f4ad000ebcccc7fcd27b16d30bd58fa1053b69 Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Fri, 24 Apr 2026 21:55:23 +0900 Subject: [PATCH 2/2] tried longest-repeating-char-replacement. --- .../sangbeenmoon.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 longest-repeating-character-replacement/sangbeenmoon.py diff --git a/longest-repeating-character-replacement/sangbeenmoon.py b/longest-repeating-character-replacement/sangbeenmoon.py new file mode 100644 index 000000000..ce5218128 --- /dev/null +++ b/longest-repeating-character-replacement/sangbeenmoon.py @@ -0,0 +1,16 @@ +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + freq = {} + left = 0 + ans = 0 + + for right in range(len(s)): + freq[s[right]] = freq.get(s[right], 0) + 1 + + while (right - left + 1) - max(freq.values()) > k: + freq[s[left]] -= 1 + left += 1 + + ans = max(ans, right - left + 1) + + return ans