在一个字符串中查找最长的回文子字符串是哪个
前言
本题可结合以下文章来看
本题在判断是否为回文字符串的基础上加上了一个计数
代码
代码如下:
//判断一个字符串回文子字符串的个数
public class String07 {
public static void main(String[] args) {
String str = "abcba";
int max = 0;//用来判断回文子字符串的长度
String max_str=null;//用来存储更新的回文子字符串
//子字符串的起始下标
for(int i=0;i<str.length();i++){
//子字符串的结束下标
for(int j=i+2;j<=str.length();j++){
//不要忘记j是<=str.lenth(),否则会丢失一个本身的回文字符串,因为substring(i,j)是截取i到j-1的字符串的
String temp = str.substring(i,j);
boolean b =isHuiWen(temp);
if(b){
if(max<temp.length()){
max = temp.length();
max_str = temp;
}
}
}
}
System.out.println("最长回文子字符串的长度为:"+max);
System.out.println("最长子字符串为:"+max_str);
}
public static boolean isHuiWen(String str){
//true:回文 false:非回文
boolean flag = true;
int len = str.length();
for(int i=0;i<len/2;i++){
char c1 = str.charAt(i);
char c2 = str.charAt(len-1-i);
if(c1!=c2){
flag = false;
break;
}
}
return flag;
}
}