Leetcode 647 回文子串

简介: Leetcode 647 回文子串

题目


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


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


示例 1:


输入:“abc”


输出:3


解释:三个回文子串: “a”, “b”, “c”


示例 2:


输入:“aaa”


输出:6


解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”

class Solution:
    def countSubstrings(self, s: str) -> int:
        num = 0
        def count(start, end):
            while start >= 0 and end < len(s) and s[start] == s[end]:
                start -= 1
                end += 1
                nonlocal num
                num += 1
        for i in range(len(s)):
            # 当字符串长度为奇数, 从最终间的数字开始
            count(i, i)
            # 当字符串长度为偶数,从最中间左右两个数字开始
            count(i, i+1)
        return num

时间复杂度O(n^2)


空间复杂度O(1)

相关文章
|
5月前
|
算法 容器
【经典LeetCode算法题目专栏分类】【第1期】左右双指针系列:盛最多水的容器、接雨水、回文子串、三数之和
【经典LeetCode算法题目专栏分类】【第1期】左右双指针系列:盛最多水的容器、接雨水、回文子串、三数之和
|
5月前
|
SQL 算法 数据挖掘
LeetCode第五题:最大回文子串【5/1000 python】
LeetCode第五题:最大回文子串【5/1000 python】
|
6月前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
56 1
|
6月前
leetcode-647:回文子串
leetcode-647:回文子串
34 0
|
6月前
|
索引
leetcode647回文子串刷题打卡
leetcode647回文子串刷题打卡
43 0
代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列
代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列
代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列
|
算法
LeetCode算法:求出字符串的最大回文子串 及 长度【只利用字符串反转就可】
LeetCode算法:求出字符串的最大回文子串 及 长度【只利用字符串反转就可】
83 0
【LeetCode5】最大回文子串(中心扩散法)
中心扩散法。 从每个节点开始,当前结点向两边扩散来判断回文串,因为回文串长度可能是奇数或者偶数,即后者就木有一个中心字符,伪代码应该如下:
135 0
【LeetCode5】最大回文子串(中心扩散法)