回文子串的数量

    技术2022-07-12  74

    647. 回文子串

    难度 中等

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

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

    class Solution: def countSubstrings(self, s: str) -> int: str_len = len(s) if str_len == 0 or s is None: return 0 dp = [[0 for _ in range(str_len)] for _ in range(str_len)] for i in range(str_len): dp[i][i] = 1 for i in range(str_len-2, -1, -1): # i为子串的起始点 for j in range(i + 1, str_len): # j 为子串的终止点 if j - i == 1: if s[i] == s[j]: dp[i][j] = 1 else: if s[i] == s[j]: dp[i][j] = dp[i + 1][j - 1] # 统计dp中 1 的个数 res = 0 # 遍历dp对角线右上方,1的个数 for i in range(str_len): for j in range(i, str_len): if dp[i][j]: res += 1 return res

    虽然也得出了结果, 但是效果很差

    下次再进行改进

     

    Processed: 0.012, SQL: 9