计算某个字符串中有多少个回文子串
例:
输入一个字符串S 例如“abcba”
符合条件的字符串有"abcba" “bcb” 所以答案为:2
思路
- 首先筛选出子字符串。
- 筛选出来后,再对筛选出来的字符串判断,依次比较前后对应两个字符是否相同,相同继续判断,不相同结束当前字符串的判断。如果flag值为true则计数加一。
代码:
public class String06 {
public static void main(String[] args) {
int num=0;
String str = "abcba";
//子字符串的起始下标
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){
System.out.println(temp);
num++;
}
}
}
System.out.println("回文子字符串的个数为:"+num);
}
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;
}
}
}