【leetcode】131.(Medium)Palindrome Partitioning
阿新 • • 發佈:2019-01-08
解題思路:
回溯
提交程式碼:
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> res=new ArrayList<List<String>>();
if(s.length()==0) return res;
List<String> curStrings=new ArrayList<>();
findPalindromes (s,curStrings,res);
return res;
}
private boolean isPalindrome(String s) {
for(int i=0;i<s.length()/2;i++) {
if(s.charAt(i)!=s.charAt(s.length()-1-i))
return false;
}
return true;
}
private void findPalindromes(String s,List<String> curStrings,List<List<String>> res) {
if(s.length()==0) {
res.add(new ArrayList<>(curStrings));
return;
}
for(int i=0;i<s.length();i++) {
String sub=s.substring(0, i+1);
if(isPalindrome(sub)) {
curStrings.add(sub);
findPalindromes (s.substring(i+1,s.length()),curStrings,res);
curStrings.remove(curStrings.size()-1);
}
}
}
}
提交程式碼: