LeetCode_Python(5)_最长回文子串

需求

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:
输入: "cbbd"
输出: "bb"

解决方法:滑动循环

  1. 回文字符:正读和反读都一样的字符串。当不存在时,返回字符串的最后一个字符;
  2. 根据字符串的长度,利用滑动窗口,每循环一次减少1位,得到所有的子串,且从最长子串开始,逐个进行反转对比,如果相等则直接返回,即为最大回文子串。该方法效率一般,容易想到,好理解;
  3. 参考代码
def longest_palindrome(s):
    mlen = len(s)
    if mlen == 0:
            return ""
    while True:
        i = 0
        while i + mlen <= len(s):
            sl = s[i:i + mlen]
            sr = sl[::-1]
            if sl == sr:
                return sl
            i = i + 1
        mlen = mlen - 1

s = 'bdababaa'
print(longest_palindrome(s))
ababa

你可能感兴趣的:(LeetCode_Python(5)_最长回文子串)