代码
class Solution { List < List<String> > result = new ArrayList<>(); Deque<String> deque = new LinkedList(); public List<List<String>> partition(String s) { backtracking(s,0); return result; } public void backtracking(String s, int startIndex ) { if(startIndex == s.length() ) { result.add(new ArrayList(deque) ); return ; } for(int i = startIndex; i < s.length(); i++ ) { if(isPandrome(s,startIndex,i) ) { deque.addLast(s.substring(startIndex, i+ 1) ); backtracking(s,i + 1); deque.removeLast(); } else { continue; } } } public boolean isPandrome(String s,int begin,int end ) { while(begin < end ) { if(s.charAt(begin++) != s.charAt(end--)) { return false; } } return true; }}