【python】求字符串里的最长回文子串?

题目:回文字符串是指一个字符串从左到右与从右到左遍历得到的序列是相同的。

分析:采用字符旋转的方法。

code:

def reverse(listStrs):

    begin = 0

    end = len(listStrs) - 1

    while begin < end:

        temp = listStrs[begin]

        listStrs[begin] = listStrs[end]

        listStrs[end] = temp

        begin += 1

        end -= 1

    return ''.join(listStrs)

if __name__ == "__main__":

    strs = 'abcba'

    listStrs = list(strs)

    strs1 = reverse(listStrs)

    if strs == strs1:

        print(strs + "为回文字串")

    else:

        print(strs + "不为回文字串")




code:

def longestPalindrome(s):

    # 如果字符串为空或者长度为1,则直接返原字符串

    if len(s) == 1 or s is None:

        return s

    # 记录最长回文子串得长度

    maxlen = 0

    # 记录最长回文子串得内容

    result = ''

    # 从头开始遍历字符串s

    for i in range(len(s)):

        for j in range(maxlen, len(s) - i ):

            #从当前记录的最大回文子串的长度往后开始遍历查看,因为如果长度小于maxlen的话,

            # 即使是回文子串,也不是最长的,不可能作为结果输出

            for j in range(maxlen,len(s) - i):

                # 字符串切片操作

                str_ = s[i: i + j + 1]

                _rts = str_[::-1]


                # 判断是否是回文子串且最长

                if str_ == _rts and len(str_) > maxlen:

                    maxlen = len(str_)

                    result = str_


    return result

if __name__ == "__main__":

    s = "babad"

    print(longestPalindrome(s))


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容