分割回文串I

 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回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); 
		
		
	}

}


猜你喜欢

转载自blog.csdn.net/wwe4023/article/details/76100413