-
题目链接 https://leetcode-cn.com/problems/palindromic-substrings/comments/
-
题目描述
-
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。
-
示例 1:
输入: "abc" 输出: 3 解释: 三个回文子串: "a", "b", "c".
示例 2:
输入: "aaa" 输出: 6 说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".
-
-
解题思路
- 以某个字符为中心向两边扩展,最大的扩展宽度就是以该字符为中心的回文子串的个数。所有位置上的回文子串的个数就是字符串中奇数回文子串的个数。要想求偶数,可以在每个字符之间插入特殊字符如@, 这样再按上述做法得到的结果就是全部的回文子串的个数。其中要注意子串边界为特殊字符的子串不应记录在内。
-
代码
- python
class Solution: def countSubstrings(self, s: str) -> int: s = '@'.join([i for i in s]) N = len(s) res = 0 for i in range(N): j = 0 while j <= min(i, N - 1 - i) and s[i - j] == s[i + j]: res += s[i - j] != '@' j += 1 return res
- python
leetcode 647. 回文子串
最新推荐文章于 2022-07-22 13:27:06 发布