[Leetcode/每日一题] 647. 回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

class Solution:
    def countSubstrings(self, s: str) -> int:
            dp = [[False for _ in range(len(s))] for _ in range(len(s))]
            res = 0
            for length in range(1, len(s) + 1):
                for i in range(0, len(s) - length + 1):
                    if length == 1:
                        dp[i][i] = True
                        res += 1
                    elif length == 2:
                        if s[i] == s[i + 1]:
                            dp[i][i + 1] = True
                            res += 1
                    else:
                        if s[i] == s[i + length - 1] and dp[i + 1][i + length - 2]:
                            dp[i][i + length - 1] = True
                            res += 1
            return res

你可能感兴趣的:(LeetCode每日一题)