leetcode中等647回文子串中等

Posted qq_40707462

tags:

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

在这里插入图片描述
思路一:动态规划(同5)

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

在这里插入图片描述
思路二:中心拓展

  • 枚举每一个可能的回文中心,然后用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。
  • 如果回文长度是奇数,那么回文中心是一个字符;如果回文长度是偶数,那么中心是两个字符。
  • 共有 2 * len - 1 个中心点,中心点可以是一个字母或两个字母
    aba 有5个中心点,分别是 a、b、c、ab、ba
    abba 有7个中心点,分别是a、b、b、a、ab、bb、ba
class Solution:
    def countSubstrings(self, s: str) -> int:
        l=len(s)
        res=0
        for center in range(2*l-1):
            left = center // 2;
            right = left + center % 2;
            while left>=0 and right<l and s[left]==s[right]:
                left-=1
                right+=1
                res+=1
        return res

在这里插入图片描述

以上是关于leetcode中等647回文子串中等的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 回文子串 中等

每日算法/刷穿 LeetCode5. 最长回文子串(中等)

LeetCode题解索引

leetcode647 回文子串(Medium)

中等5-最长回文子串 Longest Palindromic Substring

[LeetCode]647. 回文子串(DP)