Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = "aab"
,
Return
[ ["aa","b"], ["a","a","b"]
]
package leetCode; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Created by lxw, liwei4939@126.com on 2018/3/26. */ public class L131_PalindromePartitioning { public List<List<String>> partition(String s){ List<List<String>> res= new ArrayList<>(); if ("".equals(s)){ return res; } if (s.length() == 1){ res.add(Arrays.asList(s)); return res; } for (int i =0; i < s.length(); i++){ String str = s.substring(0, i+1); List<List<String>> sub = new ArrayList<>(); if (isPal(str)){ sub = partition(s.substring(i+1)); if (sub.isEmpty()){ res.add(Arrays.asList(str)); } else { for (List<String> l:sub){ List<String> _l = new ArrayList<>(); _l.add(str); _l.addAll(l); res.add(_l); } } } } return res; } public boolean isPal(String str){ int st = 0, ed = str.length()-1; while (st < ed){ if (str.charAt(st++) != str.charAt(ed--)){ return false; } } return true; } }