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

Commit 2698d6d

Browse files
solves decode ways
1 parent 8b2fe4a commit 2698d6d

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
| 88 | [Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array) | [![Java](assets/java.png)](src/MergeSortedArray.java) [![Python](assets/python.png)](python/merge_sorted_array.py) | |
8282
| 89 | [Gray Code](https://leetcode.com/problems/gray-code) | [![Java](assets/java.png)](src/GrayCode.java) | |
8383
| 90 | [Subsets II](https://leetcode.com/problems/subsets-ii) | [![Java](assets/java.png)](src/SubsetsII.java) | |
84+
| 91 | [Decode Ways](https://leetcode.com/problems/decode-ways) | [![Java](assets/java.png)](src/DecodeWays.java) | |
8485
| 94 | [Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal/) | [![Java](assets/java.png)](src/BinaryTreeInorderTraversal.java) [![Python](assets/python.png)](python/binary_tree_inorder_traversal.py) | |
8586
| 100 | [Same Tree](https://leetcode.com/problems/same-tree) | [![Java](assets/java.png)](src/SameTree.java) [![Python](assets/python.png)](python/same_tree.py) | |
8687
| 101 | [Symmetric Tree](https://leetcode.com/problems/symmetric-tree) | [![Java](assets/java.png)](src/SymmetricTree.java) [![Python](assets/python.png)](python/symmetric_tree.py) | |

src/DecodeWays.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// https://leetcode.com/problems/decode-ways
2+
// T: O(n)
3+
// S: O(1)
4+
5+
public class DecodeWays {
6+
private static final char ZERO = '0';
7+
8+
public int numDecodings(String s) {
9+
int previous = 1, current, temp;
10+
current = s.charAt(s.length() - 1) > ZERO ? 1 : 0;
11+
for (int i = s.length() - 2 ; i >= 0 ; i--) {
12+
if (s.charAt(i) == ZERO) {
13+
previous = current;
14+
current = 0;
15+
} else {
16+
temp = current;
17+
current += isValidAlphabet(s.charAt(i), s.charAt(i + 1)) ? previous : 0;
18+
previous = temp;
19+
}
20+
}
21+
return current;
22+
}
23+
24+
private boolean isValidAlphabet(char a, char b) {
25+
return (a - ZERO) * 10 + (b - ZERO) <= 26;
26+
}
27+
}

0 commit comments

Comments
 (0)