获得一个字符串的所有回文子串集合
程序员文章站
2024-03-17 21:52:40
...
import java.util.ArrayList;
public class Solution {
//获得一个字符串的所有回文子串集合
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<ArrayList<String>>arr=new ArrayList<ArrayList<String>>();
if(s==null||s.length()==0)
return arr;
ArrayList<String> list=new ArrayList<String>();
dfs(0,s,list,arr);
return arr;
}
//回溯法
private void dfs(int index,String s,ArrayList<String> preList, ArrayList<ArrayList<String>>arr)
{
if(index==s.length()){
arr.add(new ArrayList<String>(preList));
return;
}
ArrayList<String> list = new ArrayList<String>(preList);
for(int i=index;i!=s.length();i++){
if(isHui(s,index,i))
{
list.add(s.substring(index,i+1));
dfs(i+1,s,list,arr); //递归调用
list.remove(list.size()-1);
}
}
}
//判断是否为回文串
private boolean isHui(String s,int start,int end){
while(start<=end){
if(s.charAt(start++)!=s.charAt(end--))
{
return false;
}
}
return true;
}
public static void main(String[]args){
System.out.println("Hello World!");
String s="aaab";
Solution sol=new Solution();
System.out.println(sol.partition(s));
}
}
上一篇: 改版知乎模拟登陆
推荐阅读
-
获得一个字符串的所有回文子串集合
-
打印一个不重复字符串数组的所有组合
-
5.12 C语言练习(保留字母:编一个程序,输入一个字符串,将组成字符串的所有英文字母的字符输出。)
-
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写(力扣)
-
JAVA使用Map集合计算一个字符串中每个字符出现的次数
-
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径。
-
Java实现给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
-
编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
-
求一段php代码,判断一个字符串中是否存在两个或以上的子字符串
-
PHP判断一个字符串是否是回文字符串的方法_PHP教程