采用深搜回溯的方式判断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;
}
}
本文介绍了一种使用深度优先搜索(DFS)与回溯法来寻找字符串所有可能的回文子串分组的方法。该算法通过递归地检查子串是否为回文,并在确定为回文的情况下继续分割剩余部分,最终收集所有有效的回文子串组合。
325

被折叠的 条评论
为什么被折叠?



