Leetcode 647. Palindromic Substrings

这道题是给你一个字符串,记录里面所有的回文字符串的个数。例如'abc' output = 3.分别为‘a’,‘b’,‘c’,而'aaa'. output = 6 分别为'a', 'a' , 'a', 'aa', 'aa', 'aaa'

思路:我当时想到用dp,但没有想到怎么遍历。可以i从头往后遍历,然后j从头遍历到i,这样中间都是之前计算过的。然后cnt每次遇到dp[i][j]为1就加1.
python代码:

class Solution:
    def countSubstrings(self, s):
        """
        :type s: str
        :rtype: int
        """
        n = len(s)
        cnt = 0
        dp = [[0] * n for i in range(n)]
        for i in range(n):
            for j in range(0, i+1):
                if s[i] == s[j]:
                    if i == j:
                        dp[i][j] = 1
                        cnt += 1
                    elif abs(i-j) == 1:
                        dp[i][j] = 1
                        cnt += 1
                    elif abs(i - j) > 1:
                        dp[i][j] = dp[i-1][j+1]
                        if dp[i][j] == 1:
                            cnt += 1
        return cnt
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上周分析公司很难活过十年以后,感觉自己比较消极,从潜意识里来的消极。这周也确实没有做好什么与公司有关的具体的事。当...
    鄙人姓贺阅读 132评论 0 0
  • 很久以后我才明白 所有人来到你生命里自有他的意义 人最难得的就是学会怎么平静的面对离别 而这个世界的吊诡之处在于 ...
    常樂丶阅读 175评论 0 1
  • 我们之间也许需要一个转身,即使是许多年以后。 认识你是在我年少无知的孩提时代,可就是这样的一段时光,你,住进了我心...
    梦忆_f2b2阅读 336评论 0 0
  • 新世相图书馆第2期结束了,我也来把这个月的体验跟大家分享一下。 首先,我选择这次活动的原因: 一是自己爱阅读,但是...
    阿颖sxcw阅读 836评论 0 0