leetcode中等647回文子串中等
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等647回文子串中等相关的知识,希望对你有一定的参考价值。
思路一:动态规划(同5)
class Solution:
def countSubstrings(self, s: str) -> int:
l=len(s)
dp = [[False for _ in range(l)] for _ in range(l)]
res=0
for j in range(0,l):
for i in range(0,j+1):
if s[i]==s[j]:
if j-i<3:
dp[i][j]= True
else:
dp[i][j]=dp[i+1][j-1]
else:
dp[i][j]=False
if dp[i][j]:
res+=1
return res
思路二:中心拓展
- 枚举每一个可能的回文中心,然后用两个指针分别向左右两边拓展,当两个指针指向的元素相同的时候就拓展,否则停止拓展。
- 如果回文长度是奇数,那么回文中心是一个字符;如果回文长度是偶数,那么中心是两个字符。
- 共有 2 * len - 1 个中心点,中心点可以是一个字母或两个字母
aba 有5个中心点,分别是 a、b、c、ab、ba
abba 有7个中心点,分别是a、b、b、a、ab、bb、ba
class Solution:
def countSubstrings(self, s: str) -> int:
l=len(s)
res=0
for center in range(2*l-1):
left = center // 2;
right = left + center % 2;
while left>=0 and right<l and s[left]==s[right]:
left-=1
right+=1
res+=1
return res
以上是关于leetcode中等647回文子串中等的主要内容,如果未能解决你的问题,请参考以下文章