Python中最长的回文子串
假设我们有一个字符串S。我们必须在S中找到最长的回文子字符串。我们假设字符串S的长度为1000。因此,如果字符串为“BABAC”,则最长的回文子字符串为“BAB”。
为了解决这个问题,我们将按照以下步骤
定义一个与字符串长度相同阶数的方阵,并用False填充
将主要对角线元素设置为true,因此对于所有i从0到阶–1的DP[i,i]=True
开始:=0
对于范围2到长度S+1的l
结束:=i+l
如果l=2,则
除此以外
DP[i,结束-1]=True,max_len:=l,开始:=i
如果S[i]=S[end-1],则
DP[i,结束-1]=True,max_len:=l,开始:=i
如果S[i]=S[end-1]和DP[i+1,end-2],则
对于i,范围为0到S–l+1的长度
返回从索引start到start+max_len的子字符串
示例(Python)
让我们看下面的实现以更好地理解-
class Solution(object):
def longestPalindrome(self, s):
dp = [[False for i in range(len(s))] for i in range(len(s))]
for i in range(len(s)):
dp[i][i] = True
max_length = 1
start = 0
for l in range(2,len(s)+1):
for i in range(len(s)-l+1):
end = i+l
if l==2:
if s[i] == s[end-1]:
dp[i][end-1]=True
max_length = l
start = i
else:
if s[i] == s[end-1] and dp[i+1][end-2]:
dp[i][end-1]=True
max_length = l
start = i
return s[start:start+max_length]
ob1 = Solution()print(ob1.longestPalindrome("ABBABBC"))输入值
"ABBABBC"
输出结果
"BBABB"
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练