diff --git a/Problem1.java b/Problem1.java new file mode 100644 index 00000000..d67ade1f --- /dev/null +++ b/Problem1.java @@ -0,0 +1,23 @@ +class Solution { + List> result; + public List> subsets(int[] nums) { + result = new ArrayList<>(); + if (nums == null|| nums.length == 0) return result; + + backtrack(nums, new ArrayList<>(), 0); + + return result; + } + + public void backtrack(int[] nums, List set, int idx) { + result.add(new ArrayList<>(set)); + + for (int i=idx; i> result; + public List> partition(String s) { + if (s == null || s.length() == 0) return new ArrayList<>(); + + result = new ArrayList<>(); + List currList = new ArrayList<>(); + backtrack(s, 0, currList); + + return result; + } + + private void backtrack(String s, int idx, List currList) { + + if (idx == s.length()) { + result.add(new ArrayList<>(currList)); + return; + } + + for (int j = 1; j <= s.length() - idx; j++) { + + if (isPalindrome(s.substring(idx, idx+j))) { + + currList.add(s.substring(idx, idx+j)); + backtrack(s, idx+j, currList); + currList.remove(currList.size() - 1); + + } + + } + + } + + private boolean isPalindrome(String s) { + + int l = s.length(); + for (int i=0; i