647. 回文子串

2020-08-19  本文已影响0人  bangbang2
image.png

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


image.png
image.png

和最长回文子串用的是一个模板

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++;
        }
    }

}
上一篇 下一篇

猜你喜欢

热点阅读