diff --git a/combination-sum/Ujoonnee.java b/combination-sum/Ujoonnee.java new file mode 100644 index 000000000..787cc32fb --- /dev/null +++ b/combination-sum/Ujoonnee.java @@ -0,0 +1,28 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +class Solution { + public List> combinationSum(int[] candidates, int target) { + List> output = new ArrayList<>(); + Stack nums = new Stack<>(); + dfs(candidates, output, nums, target, 0, 0); + + return output; + } + + private void dfs(int[] candidates, List> output, Stack nums, int target, int start, int total) { + if (total > target) { + return; + } + if (total == target) { + output.add(new ArrayList<>(nums)); + } + for (int i=start; i 0) { + answer += n & 1; + n >>= 1; + } + + return answer; + } +} + +/* +class Solution { + public int hammingWeight(int n) { + return Integer.toBinaryString(n).replace("0", "").length(); + } +} +*/ diff --git a/valid-palindrome/Ujoonnee.java b/valid-palindrome/Ujoonnee.java new file mode 100644 index 000000000..0270534da --- /dev/null +++ b/valid-palindrome/Ujoonnee.java @@ -0,0 +1,51 @@ +// time complexity : O(n) +// space complexity : O(1) + +class Solution { + public boolean isPalindrome(String s) { + s = s.toLowerCase(); + int i = 0; + int j = s.length() - 1; + while(i < j) { + char c1 = s.charAt(i); + if (!isAlphanumeric(c1)) { + i++; + continue; + } + + char c2 = s.charAt(j); + if (!isAlphanumeric(c2)) { + j--; + continue; + } + + if (c1 != c2) { + return false; + } + i++; + j--; + } + + return true; + } + + private boolean isAlphanumeric(char c) { + return (c >= '0' && c<='9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c<= 'z'); + } +} + +/* +class Solution { + public boolean isPalindrome(String s) { + s = s.toLowerCase(); + String[] split = s.replaceAll("[^A-Za-z0-9]", "").split(""); + for (int i=0; i