• 647. 回文子串


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

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

    示例 1:

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

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

    提示:

    输入的字符串长度不会超过 1000 。

    丢人法

    class Solution:
        def countSubstrings(self, s: str) -> int:
            def ok(s):
                return s==s[::-1]
            def substrings(s):
                results = []
                num = 0
                for x in range(len(s)):
                    for i in range(len(s) - x):
                        results.append(s[i:i + x + 1])
                return results
            a=substrings(s)
            res=0
            for i in a:
                if ok(i):
                    res+=1
            return res

     中心扩散法

    class Solution:
        res=0
        def countSubstrings(self, s: str) -> int:
            for i in range(len(s)):
                self.count(s,i,i)
                self.count(s,i,i+1)
            return self.res
        def count(self,s,start,end):
            while start>=0 and end<len(s) and s[start]==s[end]:
                self.res+=1
                start-=1
                end+=1

    class Solution:
        def countSubstrings(self, s: str) -> int:
            res=0
            for i in range(len(s)*2-1):
                l=i//2
                r=i//2+i%2
                while l>=0 and r<len(s) and s[l]==s[r]:
                    res+=1
                    l-=1
                    r+=1
            return res

    dp

    class Solution:
        def countSubstrings(self, s: str) -> int:
            dp=[0]
            for i in range(1,len(s)+1):
                res=0
                for j in range(i):
                    if s[j:i]==s[j:i][::-1]:
                        res+=1
                dp.append(dp[-1]+res)
            return dp[-1]

    class Solution:
        def countSubstrings(self, s: str) -> int:
            return reduce(lambda n,i:n+sum(s[j:i]==s[j:i][::-1] for j in range(i)),range(1,len(s)+1),0)

  • 相关阅读:
    事件冒泡
    Tomcat 不能正常启动
    mybatis(非常详细的哦~~~~)
    javadoc 工具生成开发API文档
    Java 泛型
    Tomcat 服务器详解
    J2EE 工作中注意事项
    Java 枚举
    Break,Continue,Return
    位运算符
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13767218.html
Copyright © 2020-2023  润新知