647. Palindromic Substrings

Medium


Given a string s, return the number of palindromic substrings in it.

A string is a palindrome when it reads the same backward as forward.

A substring is a contiguous sequence of characters within the string.

Example 1:

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

Example 2:

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

Constraints:

  • 1 <= s.length <= 1000

  • s consists of lowercase English letters.

Solution : This solution is same as of used in Problem 5 : Longest Plaindrome Substring

class Solution:
    def countSubstrings(self, s: str) -> int:
        # Using Same Solution as in PB5 : Longest Palindrome Substring
        dp = [[False]*len(s) for _ in range(len(s))]
        count = 0
        for index in range(len(s)):
            dp[index][index] = True
            count += 1 # Each Character itself is substring
        for i in range(len(s)-1, -1 , -1):
            for j in range(i+1, len(s)):
                if s[i] == s[j]:
                    if (j-i) == 1 or dp[i+1][j-1] is True:
                        dp[i][j] = True
                        count += 1
        return count
            

Last updated