From ac496b7eccd1e5fc40979f8e94a693ac55bcbe05 Mon Sep 17 00:00:00 2001 From: river20s Date: Tue, 15 Apr 2025 23:59:57 +0900 Subject: [PATCH 1/4] feat: Add valid palindrome solution --- valid-palindrome/river20s.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 valid-palindrome/river20s.py diff --git a/valid-palindrome/river20s.py b/valid-palindrome/river20s.py new file mode 100644 index 000000000..f95bb051f --- /dev/null +++ b/valid-palindrome/river20s.py @@ -0,0 +1,7 @@ +import re + +class Solution(object): + def isPalindrome(self, s): + s = s.lower() + s = re.sub(r'[^a-z0-9]', '', s) + return s == s[::-1] From a59d295c7b123c11ac31c2e67bfee2029ff09176 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=9D=80=EB=B9=88=20Eunbeen=20Kang?= Date: Thu, 17 Apr 2025 23:41:15 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20Add=20Number=20of=201=20bits=20Solu?= =?UTF-8?q?tion=20#232=20=EB=AC=B8=EC=A0=9C=20=EB=A7=81=ED=81=AC:=20https:?= =?UTF-8?q?//leetcode.com/problems/number-of-1-bits/description/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- number-of-1-bits/river20s.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 number-of-1-bits/river20s.py diff --git a/number-of-1-bits/river20s.py b/number-of-1-bits/river20s.py new file mode 100644 index 000000000..032dcd2e5 --- /dev/null +++ b/number-of-1-bits/river20s.py @@ -0,0 +1,13 @@ +class Solution(object): + def hammingWeight(self, n): + """ + :type n: int + :rtype: int + Time complexity: O(1) + Space complexity: O(1) + """ + count = 0 + for _ in range(32): + count += n & 1 + n >>= 1 + return count From 6289a27c50bf74b57fedf38b02b8a9ceec1b9e4a Mon Sep 17 00:00:00 2001 From: river20s Date: Sat, 19 Apr 2025 21:04:43 +0900 Subject: [PATCH 3/4] feat: implement hammingWeight for Number of 1 Bits --- number-of-1-bits/river20s.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/number-of-1-bits/river20s.py b/number-of-1-bits/river20s.py index 032dcd2e5..104ab3d5b 100644 --- a/number-of-1-bits/river20s.py +++ b/number-of-1-bits/river20s.py @@ -1,13 +1,13 @@ -class Solution(object): - def hammingWeight(self, n): - """ - :type n: int - :rtype: int - Time complexity: O(1) - Space complexity: O(1) - """ - count = 0 - for _ in range(32): - count += n & 1 - n >>= 1 - return count +class Solution(object): + def hammingWeight(self, n): + """ + :type n: int + :rtype: int + Time complexity: O(1) + Space complexity: O(1) + """ + count = 0 + for _ in range(32): + count += n & 1 + n >>= 1 + return count From 776f6898259352de3ad3cb6b0d91d53b6774fe37 Mon Sep 17 00:00:00 2001 From: river20s Date: Sat, 19 Apr 2025 21:52:49 +0900 Subject: [PATCH 4/4] feat: Add Solution to Decode Ways #268 --- decode-ways/river20s.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 decode-ways/river20s.py diff --git a/decode-ways/river20s.py b/decode-ways/river20s.py new file mode 100644 index 000000000..6b57daeb4 --- /dev/null +++ b/decode-ways/river20s.py @@ -0,0 +1,31 @@ +class Solution(object): + def numDecodings(self, s): + """ + 실제로 어떤 문자열로 바뀌는지는 중요하지 않음. + 유효한 디코딩 경로가 몇 가지인가를 구하는 문제. + DP를 사용하여 각 자리수에 대해 가능한 경우의 수를 누적하여 계산. + DP[i]는 i번째 자리까지의 경우의 수를 의미. + 점화식: DP[i] = DP[i-1] + DP[i-2] (i >= 2) + Time complexity: O(n) + Space complexity: O(n) + """ + # 문자열이 비어있거나 '0'으로 시작하면 디코딩 X + if not s or s[0] == '0': + return 0 + + n = len(s) + dp = [0] * (n + 1) + dp[0] = 1 # DP를 위한 기초 상태 초기화, 실제로 빈 문자열이 들어오는 것은 아님 + dp[1] = 1 # 첫 글자 디코딩 방법은 1가지 + + for i in range(2, n + 1): + # 한 자리 수 해석 가능 여부 확인 + # s[i-2:i]는 i >= 2일때만 의미가 있으므로 2부터 루프 시작 + if s[i - 1] != '0': # '0'은 유효하지 않으므로 제외 + dp[i] += dp[i - 1] # 유효한 '1'~'9'라면 앞까지의 경우의 수를 계승 + + # 두 자리 수 해석 가능 여부 확인 + if 10 <= int(s[i -2:i]) <= 26: + dp[i] += dp[i - 2] # 유효한 '10'~'26'이라면 앞까지의 경우의 수를 계승 + + return dp[n]