题目链接
这个题目主要用到了回溯算法。只能说是一个经过优化的递归回溯。如果想提高一点算法效率的话。就要先建立一个表。。表格里面存放从A,到B字符串是不是回文的。这样能够增加一点效率。
public class Solution {
String s;
List<List<String>> result=new LinkedList<List<String>>();
List<String> tempResult=new LinkedList<String>();
public List<List<String>> partition(String s) {
this.s=s;
help(0,s.length()-1);
return result;
}
public void help(int start,int end)
{
if(start>end)
{
List<String> temp=new LinkedList<String>();
for(String str:tempResult)
{
temp.add(str);
}
result.add(temp);
return;
}
for(int i=start;i<=end;i++)
{
if(isPara(start, i))
{
tempResult.add(s.substring(start, i+1));
help(i+1,end);
tempResult.remove(tempResult.size()-1);
}
}
}
public boolean isPara(int start,int end)
{
while(start<end)
{
if(s.charAt(start)==s.charAt(end))
{
start++;
end--;
}
else
{
return false;
}
}
return true;
}
}