给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]
解题思路:
这类题(类似于全排列之类的)采用回溯法来解决
回文串要判断回文串
class Solution { List<List<String>>res=new ArrayList<>(); public List<List<String>> partition(String s) { if(s.length()==0)return res; part(new ArrayList<String>(),s,0); return res; } public void part(List<String>list,String s,int begin){ if(begin==s.length()){ res.add(list); return; } for(int i=begin+1;i<=s.length();i++){ if(jud(s.substring(begin,i))){ list.add(s.substring(begin,i)); part(new ArrayList(list),s,i); list.remove(list.size()-1); } } } //判断回文串 public boolean jud(String s){ int len=s.length(); if(len==0)return false; int low=0; int high=len-1; while(low<high){ if(s.charAt(low)!=s.charAt(high)){ return false; } low++; high--; } return true; } }