Skip to content

Commit ef6c033

Browse files
refactor 91
1 parent 76e6710 commit ef6c033

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy