采用深搜回溯的方式判断s的所有回文子串。 在回文时继续向下搜索,当s被搜索完即找到一组解加入结果列表中。
public class Solution {
ArrayList<ArrayList<String>> res = new ArrayList<ArrayList<String>>();
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<String> per = new ArrayList<String>();
fun(res,per,s);
return res;
}
void fun(ArrayList<ArrayList<String>> res,ArrayList<String> per,String s)
{
if( s.length() == 0 )
{
res.add(new ArrayList<String>(per));
}
for( int i=1;i<=s.length();i++ )
{
String tmp = s.substring(0,i);
if( IsP(tmp) )
{
per.add(tmp);
fun( res,per,s.substring(i) );
per.remove(per.size()-1);
}
}
}
Boolean IsP(String s)
{
int i=0,j=s.length()-1;
while( i<j )
{
if( s.charAt(i) != s.charAt(j) )
{
return false;
}
i++;
j--;
}
return true;
}
}