[LC] 647. Palindromic Substrings

Posted xuanlu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LC] 647. Palindromic Substrings相关的知识,希望对你有一定的参考价值。

Given a string, your task is to count how many palindromic substrings in this string.

The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.

Example 1:

Input: "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".

 

Example 2:

Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".

 

Solution 1

class Solution {
    public int countSubstrings(String s) {
        int len = s.length();
        int res = 0;
        boolean [][] isPalin = new boolean[len][len];
        for (int i = 0; i < len; i++) {
            for (int j = 0; j <= i; j++) {
                if (s.charAt(i) == s.charAt(j) && (i <= j + 2 || isPalin[i - 1][j + 1])) {
                    isPalin[i][j] = true;
                    res += 1;
                }
            }
        }
        return res;
    }
}

 

Solution 2

class Solution {
    public int countSubstrings(String s) {
        int len = s.length();
        int[] count = new int[1];
        for (int i = 0; i < len; i++) {
            getPalin(s, i, i, count);
            getPalin(s, i, i + 1, count);
        }
        return count[0];
    }
    
    private void getPalin(String s, int left, int right, int[] count) {
        // need to ensure left, right value for while
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            count[0] += 1;
            left -= 1;
            right += 1;
        }
    } 
}

 

以上是关于[LC] 647. Palindromic Substrings的主要内容,如果未能解决你的问题,请参考以下文章

647. Palindromic Substrings

Leetcode 647: Palindromic Substrings

LeetCode 647. Palindromic Substrings

647. Palindromic Substrings

647. Palindromic Substrings

LeetCode 647. 回文子串(Palindromic Substrings)