Skip to content

Commit de72b80

Browse files
Create 0091-decode-ways.go
Memoization Accepted Submission: _https://leetcode.com/submissions/detail/872083022/_ Tabulation Accepted Submission: _https://leetcode.com/submissions/detail/872087433/_
1 parent 66b2000 commit de72b80

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

go/0091-decode-ways.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
func numDecodingsMemoization(s string) int {
2+
dp := make([]int, len(s) + 1)
3+
dp[len(s)] = 1
4+
5+
var dfs func(i int) int
6+
dfs = func(i int) int {
7+
if dp[i] != 0 {
8+
return dp[i]
9+
} else if s[i] == '0' {
10+
return 0
11+
}
12+
13+
res := dfs(i + 1)
14+
if i + 1 < len(s) && (
15+
s[i] == '1' || s[i] == '2' && (s[i + 1] >= '0' && s[i + 1] <= '6')) {
16+
res += dfs(i + 2)
17+
}
18+
dp[i] = res
19+
return res
20+
}
21+
22+
return dfs(0)
23+
}
24+
25+
func numDecodingsTabulation(s string) int {
26+
dp := make([]int, len(s) + 1)
27+
dp[len(s)] = 1
28+
for i := len(s) - 1; i >= 0; i-- {
29+
if s[i] == '0' {
30+
dp[i] = 0
31+
} else {
32+
dp[i] = dp[i + 1]
33+
}
34+
35+
if i + 1 < len(s) && (
36+
s[i] == '1' || s[i] == '2' && (s[i + 1] >= '0' && s[i + 1] <= '6')) {
37+
dp[i] += dp[i + 2]
38+
}
39+
}
40+
return dp[0]
41+
}

0 commit comments

Comments
 (0)