题目:
给定一个字符串,统计并返回 回文子串 的数目。
示例:
输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"
输入:s = "aaa"
输出:6
解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
代码:
class Solution {
public int countSubstrings(String s) {
char[] ch = s.toCharArray();
int num = 0;
int i=0;
while(i < ch.length){
num ++;
int l = i-1;
int r = i+1;
if(l>=0 && ch[i] == ch[l]){
num ++;
l--;
while(l >= 0 && r < ch.length && ch[l] == ch[r]){
num ++;
l--;
r++;
}
}
int m = i-1;
int n = i+1;
while(m >= 0 && n < ch.length && ch[m] == ch[n]){
num ++;
m--;
n++;
}
i++;
}
return num;
}
}
思路:
- 首先想到的是定好中间指针,然后左右指针判断是否相等。
- 遇到问题是:没有统计到偶数的情况
- 偶数的情况的前提是第一次 i=l ;