【刷题喽】647. 回文子串

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

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

 

示例 1:

输入:"abc"
输出:3
解释:三个回文子串: "a", "b", "c"
示例 2:

输入:"aaa"
输出:6
解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
 

实际上也是动态规划的东西,把我上面的移除盒子那道题理解了,基本上差别不大,庆幸自己可以写出来一道了,哈哈!

class Solution(object):
    def countSubstrings(self, s):
        """
        :type s: str
        :rtype: int
        """
        c=[[0]*len(s) for _ in range(len(s))]
        return self.getCount(s,c,0,len(s)-1)
    def getCount(self,a,b,start,end):
        if start >end :
            return 0
        if len(a)==1:
            return 1
        if b[start][end]!=0:
            return b[start][end]
        tempCount=0
        for i in range(start,len(a)):
            if a[start:(i+1)]==a[start:(i+1)][::-1]:
                tempCount+=1

        b[start][end]=tempCount+self.getCount(a,b,start+1,end)
        return b[start][end]

 

 

 

 

 

 

你可能感兴趣的:(leetcode,python,字符串,算法)