647. 回文子串(高频题)


647. 回文子串

解题思路

本题和lc第5题思路差不多,而且注意,一般寻找回文 都是用从中心向两端扩大

代码

class Solution {
    public int countSubstrings(String s) {
        int res=0;
        for (int i = 0; i < s.length(); i++) {
            //寻找长度为奇数的回文子串
            res = res + palindrome(s, i, i);
            //寻找长度为偶数的回文子串
            res = res + palindrome(s, i, i + 1);
        }

        return res;
    }


    //返回以s[l]和s[r]为中心的最长回文子串
    public int palindrome(String s, int l, int r) {
        int curRes = 0;
        while (l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
            //从中间向两端扩散
            l--;
            r++;
            //是回文串,那么长度就加一
            curRes++;
        }

        return curRes;

    }
}

文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录