1
// Plaindrome Partitioning2
// Leetcode : https://leetcode.com/problems/palindrome-partitioning/5
public List<List<String>> partition(String s) {6
List<List<String>> result = new ArrayList<>();7
if (s == null || s.length() == 0) return result;8
helper(s, 0, new ArrayList<String>(), result);12
private void helper(String s, int start, List<String> list, List<List<String>> result) {13
if (start == s.length()) {14
result.add(new ArrayList<>(list));17
for (int i = start; i < s.length(); i++) {18
if (isPalindrome(s, start, i)) {19
list.add(s.substring(start, i + 1));20
helper(s, i + 1, list, result);21
list.remove(list.size() - 1);26
private boolean isPalindrome(String s, int start, int end) {28
if (s.charAt(start++) != s.charAt(end--)) return false;