题解 | #所有的回文子串II#
所有的回文子串II
https://www.nowcoder.com/practice/3373d8924d0e441987650194347d3c53
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串一维数组
*/
public static Set<String> set = new TreeSet<>();
public String[] partitionII (String s) {
// write code here
search(0, s, new StringBuffer());
String[] strings = new String[set.size()];
int index = 0;
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
strings[index] = iterator.next();
index++;
}
return strings;
}
public static void search(int index,String s,StringBuffer stringBuffer){
if(index==s.length()){
return;
}
if(!s.contains(stringBuffer.toString())){
return;
}
stringBuffer.append(s.charAt(index));
if(stringBuffer.length()>=2 && isParame(stringBuffer.toString()) && s.contains(stringBuffer.toString())){
set.add(stringBuffer.toString());
}
search(index+1,s,stringBuffer);
stringBuffer.deleteCharAt(stringBuffer.length()-1);
search(index+1,s,stringBuffer);
}
public static boolean isParame(String s) {
StringBuilder stringBuffer = new StringBuilder();
stringBuffer.append(s);
return stringBuffer.reverse().toString().equals(s);
}
}
本题考察的知识点是递归,所用的编程语言是java。
递归的本质就是枚举,将所有的可能性都列举出来,然后判断满足条件的有哪些,本题也是一样,首先要求是回文串,而且是子串,然后再按照字符串字典序从小到大的顺序进行排列



查看8道真题和解析