Skip to content

Commit 43151ce

Browse files
refactor 91
1 parent 2356942 commit 43151ce

File tree

1 file changed

+14
-83
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+14
-83
lines changed
Lines changed: 14 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package com.fishercoder.solutions;
22

3-
import java.util.HashSet;
4-
import java.util.Set;
5-
63
/**
4+
* 91. Decode Ways
5+
*
76
* A message containing letters from A-Z is being encoded to numbers using the following mapping:
87
98
'A' -> 1
@@ -26,93 +25,25 @@ public class _91 {
2625
* I then check one digit and two digit combination and save the results along the way.
2726
* In the end, dp[n] will be the end result.*/
2827

29-
public static int numDecodings_solution2(String s) {
28+
public static class Solution1 {
29+
public int numDecodings(String s) {
3030
if (s == null || s.length() == 0) {
31-
return 0;
31+
return 0;
3232
}
3333
int[] dp = new int[s.length() + 1];
3434
dp[0] = 1;
3535
dp[1] = (s.charAt(0) != '0') ? 1 : 0;
3636
for (int i = 2; i <= s.length(); i++) {
37-
int first = Integer.valueOf(s.substring(i - 1, i));
38-
int second = Integer.valueOf(s.substring(i - 2, i));
39-
if (first > 0 && first <= 9) {
40-
dp[i] += dp[i - 1];
41-
}
42-
if (second >= 10 && second <= 26) {
43-
dp[i] += dp[i - 2];
44-
}
37+
int first = Integer.valueOf(s.substring(i - 1, i));
38+
int second = Integer.valueOf(s.substring(i - 2, i));
39+
if (first > 0 && first <= 9) {
40+
dp[i] += dp[i - 1];
41+
}
42+
if (second >= 10 && second <= 26) {
43+
dp[i] += dp[i - 2];
44+
}
4545
}
4646
return dp[s.length()];
47-
}
48-
49-
public static void main(String... args) {
50-
String msg = "100";
51-
}
52-
53-
/**
54-
* My original accepted yet lengthy solution.
55-
*/
56-
public static int numDecodings_solution1(String s) {
57-
58-
if (s == null || s.length() == 0) {
59-
return 0;
60-
}
61-
Set<String> validStrings = new HashSet();
62-
validStrings.add("1");
63-
validStrings.add("2");
64-
validStrings.add("3");
65-
validStrings.add("4");
66-
validStrings.add("5");
67-
validStrings.add("6");
68-
validStrings.add("7");
69-
validStrings.add("8");
70-
validStrings.add("9");
71-
validStrings.add("10");
72-
validStrings.add("11");
73-
validStrings.add("12");
74-
validStrings.add("13");
75-
validStrings.add("14");
76-
validStrings.add("15");
77-
validStrings.add("16");
78-
validStrings.add("17");
79-
validStrings.add("18");
80-
validStrings.add("19");
81-
validStrings.add("20");
82-
validStrings.add("21");
83-
validStrings.add("22");
84-
validStrings.add("23");
85-
validStrings.add("24");
86-
validStrings.add("25");
87-
validStrings.add("26");
88-
89-
int n = s.length();
90-
int[] dp = new int[n];
91-
if (validStrings.contains(s.substring(0, 1))) {
92-
dp[0] = 1;
93-
} else {
94-
dp[0] = 0;
95-
}
96-
97-
for (int i = 1; i < n; i++) {
98-
if (validStrings.contains(s.substring(i, i + 1)) && validStrings.contains(s.substring(i - 1, i + 1))) {
99-
if (i > 1) {
100-
dp[i] = dp[i - 2] + dp[i - 1];
101-
} else {
102-
dp[1] = 2;
103-
}
104-
} else if (!validStrings.contains(s.substring(i, i + 1)) && !validStrings.contains(s.substring(i - 1, i + 1))) {
105-
return 0;
106-
} else if (!validStrings.contains(s.substring(i, i + 1)) && validStrings.contains(s.substring(i - 1, i + 1))) {
107-
if (i > 1) {
108-
dp[i] = dp[i - 2];
109-
} else {
110-
dp[i] = dp[i - 1];
111-
}
112-
} else {
113-
dp[i] = dp[i - 1];
114-
}
115-
}
116-
return dp[n - 1];
47+
}
11748
}
11849
}

0 commit comments

Comments
 (0)