会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
统计 s 里有多少段连续子串是回文。内容相同但起点不同的子串要分别计数。每个单字符都是回文。
- 回文一定关于某个中心对称。中心可以是一个字符(奇数长度),也可以是两个字符中间的缝(偶数长度)。
- 枚举每个中心,左右指针同时向外扩,只要 s[left]=s[right] 就找到一个回文,计数加一。
- 一共 2n−1 个中心,每个中心最多扩 O(n) 步,总复杂度 O(n2)。∣s∣≤1000,足够。
- 也可以 dp[i][j] 表示 s[i..j] 是否回文:s[i]=s[j] 且内部是回文(或长度不超过 2)。常见假解:只数奇数回文;按内容去重;把子序列也算进去。