给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回s所有可能的回文串分割方案。
样例
给出 s = "aab",返回
[
["aa", "b"],
["a", "a", "b"]
返回s所有可能的回文串分割方案。
样例
给出 s = "aab",返回
[
["aa", "b"],
["a", "a", "b"]
]
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。 返回s所有可能的回文串分割方案。 样例 给出 s = "aab",返回 [ ["aa", "b"], ["a", "a", "b"] ] * * @author Dell * */ public class Test136 { public static List<List<String>> partition(String s) { List<List<String>> result=new ArrayList<>(); if(s==null||s.length()==0) return result; List<String> list=new ArrayList<>(); backtracing(s,0,list,result); return result; } public static void backtracing(String s, int start, List<String> list, List<List<String>> result) { if(start==s.length()) { result.add(new ArrayList<String>(list)); } else { for(int i=start;i<s.length();i++) { String subString=s.substring(start,i+1); if(!isHuiWen(subString)) { continue; } list.add(subString); backtracing(s,i+1,list,result); list.remove(list.size()-1); } } } public static boolean isHuiWen(String s1) { boolean result=true; for(int i=0;i<s1.length()/2;i++) { if(s1.charAt(i)!=s1.charAt(s1.length()-i-1)) { result=false; break; } } return result; } public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s=sc.nextLine(); List<List<String>> list=partition(s); System.out.println(list); } }