问题
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。
例子
思路
类似leetcode 第5题
-
方法1
龙卷风法,找龙眼
两种龙眼:一种bab,一种baab,即(i,i)和(i,i+1)
-
方法2
代码
//方法1
class Solution {
private int res=0;
public int countSubstrings(String s) {
for(int i=0; i<s.length(); i++) {
check(s,i,i);//回文串长度为奇数
check(s,i,i+1);//回文串长度为偶数
}
return res;
}
public void check(String s, int i, int j) {
while(i>=0 && j<s.length()) {
if(s.charAt(i)==s.charAt(j)){
i--;
j++;
res+=1;
}else break;
}
}
}
//方法2