LeetCode 热题 HOT 100 (023/100)【宇宙最简单版】

【技巧】No. 0647 回文子串【中等】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【力扣详解】谢谢你的支持!

题目描述:给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目

  • 回文字符串 是正着读和倒过来读一样的字符串

  • 子字符串 是字符串中的由连续字符组成的一个序列

  • 示例 1:

    输入:s = “abc”
    输出:3
    解释:三个回文子串: “a”, “b”, “c”

  • 示例 2:

    输入:s = “aaa”
    输出:6
    解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”

🔥 思路:从每个潜在的回文中心位置出发,向两侧延展直至延展失败 (每成功延展一次则结果 +1)

  • 中心位置可能是一个 (对应奇数长度的回文串) or 两个 (对应偶数长度的回文串)

参考如上思路,给出详细步骤如下:

  • 步骤一⭐编写延展函数:每成功延展一次则结果 +1
  • 步骤二⭐遍历每个潜在的回文中心位置,调用延展函数处理
    • 中心位置可能是一个 (对应奇数长度的回文串) or 两个 (对应偶数长度的回文串)
class Solution:
    def countSubstrings(self, s: str) -> int:
        def extend(left, right):  # --------------------------- step 1
            temp = 0
            while left >= 0 and right <= len(s)-1 and s[left] == s[right]:
                left  -= 1
                right += 1
                temp += 1
            return temp

		# ----------------------------------------------------- step 2
        result = 0
        for s_idx, ss in enumerate(s):
            result += extend(s_idx, s_idx)      # 奇数对称
            result += extend(s_idx, s_idx+1)    # 偶数对称
        
        return result

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值