Python语言,leetcode题库刷题记录 (五)Longest Palindromic Substring

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

Example:

Input: "babad"

Output: "bab"

Note: "aba" is also a valid answer.

 

Example:

Input: "cbbd"

Output: "bb"

Pyhton代码如下:

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        longest,start = 1,0
        for i in xrange(len(s)):
            #s[i]和s[i-len-1]构成回文首尾:如……abcba中a和a构成首尾,长度每次递增2
            if i-longest-1>=0 and s[i-longest-1:i+1] == s[i-longest-1:i+1][::-1]:
                start = i-longest-1
                longest += 2
                continue
            #s[i]和s[1-len]构成回文首尾:如……bb中b和b构成首尾,长度每次递增1
            if i-longest>=0 and s[i-longest:i+1] == s[i-longest:i+1][::-1]:
                start = i-longest
                longest += 1
        return s[start:start+longest]

最初使用了两层for循环,运行超时了,新方法如上,使用一层循环记最长回文子串的开始下标和长度。




posted @ 2017-03-13 16:04  kuqs(奇小东)  阅读(240)  评论(0)    收藏  举报