Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3a2d3bc

Browse files
refactor 639
1 parent 385d25f commit 3a2d3bc

File tree

1 file changed

+29
-25
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+29
-25
lines changed

src/main/java/com/fishercoder/solutions/_639.java

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -31,34 +31,38 @@
3131
3232
*/
3333
public class _639 {
34-
/**reference: https://leetcode.com/articles/decode-ways-ii/#approach-2-dynamic-programming-accepted*/
35-
int m = 1000000007;
34+
public static class Solution1 {
35+
/**
36+
* reference: https://leetcode.com/articles/decode-ways-ii/#approach-2-dynamic-programming-accepted
37+
*/
38+
int m = 1000000007;
3639

37-
public int numDecodings(String s) {
38-
long[] dp = new long[s.length() + 1];
39-
dp[0] = 1;
40-
dp[1] = s.charAt(0) == '*' ? 9 : s.charAt(0) == '0' ? 0 : 1;
41-
for (int i = 1; i < s.length(); i++) {
42-
if (s.charAt(i) == '*') {
43-
dp[i + 1] = 9 * dp[i];
44-
if (s.charAt(i - 1) == '1') {
45-
dp[i + 1] = (dp[i + 1] + 9 * dp[i - 1]) % m;
46-
} else if (s.charAt(i - 1) == '2') {
47-
dp[i + 1] = (dp[i + 1] + 6 * dp[i - 1]) % m;
48-
} else if (s.charAt(i - 1) == '*') {
49-
dp[i + 1] = (dp[i + 1] + 15 * dp[i - 1]) % m;
50-
}
51-
} else {
52-
dp[i + 1] = s.charAt(i) != '0' ? dp[i] : 0;
53-
if (s.charAt(i - 1) == '1') {
54-
dp[i + 1] = (dp[i + 1] + dp[i - 1]) % m;
55-
} else if (s.charAt(i - 1) == '2' && s.charAt(i) <= '6') {
56-
dp[i + 1] = (dp[i + 1] + dp[i - 1]) % m;
57-
} else if (s.charAt(i - 1) == '*') {
58-
dp[i + 1] = (dp[i + 1] + (s.charAt(i) <= '6' ? 2 : 1) * dp[i - 1]) % m;
40+
public int numDecodings(String s) {
41+
long[] dp = new long[s.length() + 1];
42+
dp[0] = 1;
43+
dp[1] = s.charAt(0) == '*' ? 9 : s.charAt(0) == '0' ? 0 : 1;
44+
for (int i = 1; i < s.length(); i++) {
45+
if (s.charAt(i) == '*') {
46+
dp[i + 1] = 9 * dp[i];
47+
if (s.charAt(i - 1) == '1') {
48+
dp[i + 1] = (dp[i + 1] + 9 * dp[i - 1]) % m;
49+
} else if (s.charAt(i - 1) == '2') {
50+
dp[i + 1] = (dp[i + 1] + 6 * dp[i - 1]) % m;
51+
} else if (s.charAt(i - 1) == '*') {
52+
dp[i + 1] = (dp[i + 1] + 15 * dp[i - 1]) % m;
53+
}
54+
} else {
55+
dp[i + 1] = s.charAt(i) != '0' ? dp[i] : 0;
56+
if (s.charAt(i - 1) == '1') {
57+
dp[i + 1] = (dp[i + 1] + dp[i - 1]) % m;
58+
} else if (s.charAt(i - 1) == '2' && s.charAt(i) <= '6') {
59+
dp[i + 1] = (dp[i + 1] + dp[i - 1]) % m;
60+
} else if (s.charAt(i - 1) == '*') {
61+
dp[i + 1] = (dp[i + 1] + (s.charAt(i) <= '6' ? 2 : 1) * dp[i - 1]) % m;
62+
}
5963
}
6064
}
65+
return (int) dp[s.length()];
6166
}
62-
return (int) dp[s.length()];
6367
}
6468
}

0 commit comments

Comments
 (0)