
思路:
直接暴力来列举出所有的回文中心,然后一个一个的去判断是不是能构成回文串
判断索引为left和right的值是不是相等,如果相等res++,同时向左右继续去比较
对于长度为n的字符串,有2n-1个回文中心
因为长度为奇数,回文中心只有一个 left==right
如果长度是偶数,回文中心有两个 left=i/2 right=i/2+i%2
回文中心只有两种:1个字符或2个字符
对于长度为n的字符串,每一个字符都是一种回文中心
任何两个连续且不重复的字符都是回文中心


和最长回文子串用的是一个模板
class Solution {
int res=0;
public int countSubstrings(String s) {
for(int i=0;i<s.length();i++){
helper(i,i,s);
helper(i,i+1,s);
}
return res;//左闭右开
}
public void helper(int left,int right,String s){
while(left>=0&&left<s.length()&&right>=0&&right<s.length()&&left<=right&&s.charAt(left)==s.charAt(right)){
res++;
left--;
right++;
}
}
}
网友评论