File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ Conditions:
3+ - 1 <= s.length <= 100
4+ - s contains only digits and may contain leading zero(s).
5+
6+ Time Complexity: O(n)
7+ - 각 문자를 한 번씩만 방문함 (문자열의 길이: n)
8+
9+ Space Complexity: O(n)
10+ - dp 배열의 크기는 n+1
11+ - 이 배열 이외에 추가 공간을 사용하지 않음
12+
13+ Base cases:
14+ - If string is empty or starts with '0', return 0 (impossible to decode)
15+
16+ Dynamic Programming approach:
17+ - dp[i] represents the number of ways to decode first i characters
18+ - dp array has size n+1 to include the empty string case (dp[0])
19+ - For each position, consider both single-digit and two-digit decodings
20+
21+ 메모:
22+ - 다른 dp문제 풀어보기
23+ """
24+ class Solution :
25+ def numDecodings (self , s : str ) -> int :
26+ if not s or s [0 ] == '0' :
27+ return 0
28+
29+ n = len (s )
30+ dp = [0 ] * (n + 1 )
31+ dp [0 ] = 1
32+
33+ for i in range (1 , n + 1 ):
34+ if s [i - 1 ] != '0' :
35+ dp [i ] += dp [i - 1 ]
36+
37+ if i > 1 and s [i - 2 ] != '0' :
38+ two_digit = int (s [i - 2 :i ])
39+ if 1 <= two_digit <= 26 :
40+ dp [i ] += dp [i - 2 ]
41+
42+ return dp [n ]
You can’t perform that action at this time.
0 commit comments