diff --git a/decode-ways/njngwn.java b/decode-ways/njngwn.java new file mode 100644 index 000000000..3ae1c4cda --- /dev/null +++ b/decode-ways/njngwn.java @@ -0,0 +1,33 @@ +// Time Complexity: O(n), n: s.length() +// Space Complexity: O(n), n: s.length() +class Solution { + public int numDecodings(String s) { + if (s.length() == 0) { // edge case + return 0; + } + + int length = s.length()+1; + int[] cntArr = new int[length]; // using dynamic programming + + // check the case i == 0, i == 1 first + cntArr[0] = 1; + if (s.charAt(0) != '0') { + cntArr[1] = 1; + } + + for (int i = 2; i < length; ++i) { + char ch = s.charAt(i-1); + if (ch != '0') { // check for 1-9 + cntArr[i] += cntArr[i-1]; + } + + // check for 10-26 + int num = (s.charAt(i-2)-'0') * 10 + (ch-'0'); + if (num >= 10 && num <= 26) { + cntArr[i] += cntArr[i-2]; + } + } + + return cntArr[length-1]; + } +} diff --git a/valid-palindrome/njngwn.java b/valid-palindrome/njngwn.java new file mode 100644 index 000000000..549cb504c --- /dev/null +++ b/valid-palindrome/njngwn.java @@ -0,0 +1,22 @@ +class Solution { + public boolean isPalindrome(String s) { + s = s.toLowerCase(); // convert into lowercase letters + s = s.replaceAll("[^a-zA-Z0-9]", ""); // remove non-alphanumeric characters + int start = 0; + int end = s.length()-1; + + while (start < end) { + char startChar = s.charAt(start); + char endChar = s.charAt(end); + + if (startChar != endChar) { + return false; + } + + ++start; + --end; + } + + return true; + } +}