From d9bc50ba7c1a080dff83385dae605a2c9708da16 Mon Sep 17 00:00:00 2001 From: Jeongwon Na Date: Wed, 12 Aug 2026 13:46:37 +0200 Subject: [PATCH 1/3] solve: reverse bits --- reverse-bits/njngwn.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 reverse-bits/njngwn.py diff --git a/reverse-bits/njngwn.py b/reverse-bits/njngwn.py new file mode 100644 index 0000000000..1f15c8f93a --- /dev/null +++ b/reverse-bits/njngwn.py @@ -0,0 +1,15 @@ +class Solution: + # Time Complexity: O(1) + # Space Complexity: O(1) + def reverseBits(self, n: int) -> int: + stack = [] + for i in range(32): + stack.append(n % 2) + n //= 2 + + res, multiples = 0, 1 + while stack: + res += (stack.pop() * multiples) + multiples *= 2 + + return res From 79b80ff4001e62356a90a85ce7f84aaa2f1ed47c Mon Sep 17 00:00:00 2001 From: Jeongwon Na Date: Thu, 13 Aug 2026 15:13:59 +0200 Subject: [PATCH 2/3] solve: longest repeating character replacement --- .../njngwn.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 longest-repeating-character-replacement/njngwn.py diff --git a/longest-repeating-character-replacement/njngwn.py b/longest-repeating-character-replacement/njngwn.py new file mode 100644 index 0000000000..ec80c6374c --- /dev/null +++ b/longest-repeating-character-replacement/njngwn.py @@ -0,0 +1,21 @@ +class Solution: + # Time Complexity: O(n), n: len(s) + # Space Complexity: O(1) + def characterReplacement(self, s: str, k: int) -> int: + count = [0] * 26 + max_len, max_cnt = 0, 0 + left = 0 + + for right in range(len(s)): # window expands + ch = ord(s[right]) - ord('A') + count[ch] += 1 + max_cnt = max(max_cnt, count[ch]) + + # len(substring) - len(most frequent character) > k => window needs to schrink + if (right - left + 1) - max_cnt > k: + count[ord(s[left]) - ord('A')] -= 1 + left += 1 + + max_len = max(max_len, right - left + 1) + + return max_len From 129c6b3699aae80e3d9e77f5e3f0c33eecdb986f Mon Sep 17 00:00:00 2001 From: Jeongwon Na Date: Sun, 16 Aug 2026 15:09:45 +0200 Subject: [PATCH 3/3] solve: palindrome substrings --- palindromic-substrings/njngwn.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 palindromic-substrings/njngwn.py diff --git a/palindromic-substrings/njngwn.py b/palindromic-substrings/njngwn.py new file mode 100644 index 0000000000..bf9a2f6a40 --- /dev/null +++ b/palindromic-substrings/njngwn.py @@ -0,0 +1,22 @@ +class Solution: + # Time Complexity: O(n^2), n: len(s) + # Space Complexity: O(1) + def countSubstrings(self, s: str) -> int: + cnt = 0 + + for i in range(len(s)): + # odd number + start, end = i, i + while start >= 0 and end < len(s) and s[start] == s[end]: + start -= 1 + end += 1 + cnt += 1 + + # even number + start, end = i, i + 1 + while start >= 0 and end < len(s) and s[start] == s[end]: + start -= 1 + end += 1 + cnt += 1 + + return cnt