分割回文串
核心代码
public static void Devidi(List<List<String>> pList,String s,List<String> arry,int start) {// plist 存储 可以拆分的序列合 s为输入字符串 arry为单个序列 即一种解 start 为开始的点
if (start ==s.length()) { //每一次嵌套终止都会是这里 将其中一种解答案 放入答案集里面
pList.add(arry);
}
for(int i=start;i<=s.length();i++){ //将整个字符串拆分 深度搜索
if(JudgeHuiWen(s.substring(start,i))){
ArrayList<String> tempStrings =new ArrayList<String>(arry);
tempStrings.add(s.substring(start,i));
Devidi(pList,s,tempStrings,i);
}
}
}
//////////////////////////////////////////////////////////////////////////////
public class Solution {
/**
* @param s: A string
* @return: A list of lists of string
*/
//substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。
//substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。
//toCharArray() 将此字符串转换为一个新的字符数组。
public static boolean JudgeHuiWen(String string) {
char[] chararry= new char[100];
chararry=string.toCharArray();
if(string==null||string.length()==0)
return false;
for(int i=0;i<=chararry.length/2-1;i++){
if(chararry[i]!=chararry[chararry.length-1-i]){
return false;
}
}
return true;
}
public static void Devidi(List<List<String>> pList,String s,List<String> arry,int start) {
if (start ==s.length()) {
pList.add(arry);
}
for(int i=start;i<=s.length();i++){
if(JudgeHuiWen(s.substring(start,i))){
ArrayList<String> tempStrings =new ArrayList<String>(arry);
tempStrings.add(s.substring(start,i));
Devidi(pList,s,tempStrings,i);
}
}
}
public static List<List<String>> partition(String s) {
// write your code here
List<List<String>> pList=new ArrayList<List<String>>();
int start=0;
ArrayList<String> arry=new ArrayList<String>();
Devidi(pList,s,arry,start);
return pList;
}
}
浙公网安备 33010602011771号