美文网首页【python程序员面试宝典|程序员算法宝典】
【python】求字符串里的最长回文子串?

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

作者: 阿牛02 | 来源:发表于2019-07-25 11:42 被阅读0次

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

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

    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))

    相关文章

      网友评论

        本文标题:【python】求字符串里的最长回文子串?

        本文链接:https://www.haomeiwen.com/subject/ierfrctx.html