知行编程网知行编程网  2022-10-21 17:00 知行编程网 隐藏边栏  3 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python找回文子串的方法的相关知识,包括注销阅文作者账号,以及删了文件怎么找回这些编程知识,希望对大家有参考作用。

如何在 Python 中检索文本子字符串


1、双指针两边扩展

遍历指针为i,j=i+1,i左移,j右移。判断是否相等,将长度和下标赋值给临时变量,最后返回切片。唯一的大洞。回文字符串长度可以是奇数或偶数。当数字为奇数时,内循环从 i-1 开始。边界条件也需要注意。

class Solution(object):
        
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        n = len(s)
        maxL, maxR, max = 0, 0, 0
        for i in range(n):
            # 长度为偶数的回文字符串
            start = i
            end = i + 1
            while start >= 0 and end < n:
                if s[start] == s[end]:
                    if end - start + 1 > max:
                        max = end - start + 1
                        maxL = start
                        maxR = end
                    start -= 1
                    end += 1
                else:
                    break
    
            # 长度为奇数的回文子串
            start = i - 1
            end = i + 1
            while start >= 0 and end < n:
                if s[start] == s[end]:
                    if end - start + 1 > max:
                        max = end - start + 1
                        maxL = start
                        maxR = end
                    start -= 1
                    end += 1
                else:
                    break
        return s[maxL:maxR+1]


2、Manacher算法

由于在输入预处理步骤中,所有回文子字符都已转换为奇数长度。所以在后面的操作中,只需要将每个输入字符作为一个回文子字符的中心。不需要考虑长度均匀的回文子字符。

'''
@author: Yizhou Zhao
'''
# 设置 radius[i] = 1, 因为字符本身也是一个回文数
radius[i] = 1
while(string[i-radius[i]] == string[i+radius[i]]):
    radius[i] += 1


本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享