Longest Palindromic Substring--leetcode

我的解法v1:

  • 思路:查找字符串中aa或者aba類似的字符字串,然後開始往兩邊拓展

  • 代碼:

class Solution:
    # @param {string} s
    # @return {string}
    def longestPalindrome(self, s):
        ret = ''
        if len(s) == 1:
            return s
        for index in range(len(s) -1):
            if s[index] == s[index +1]:
                tmp = self.verifyPalindrome(s, index, index +1)
                if len(tmp) >= len(ret):
                    ret = tmp
        for index in range(1, len(s)-1):
            if s[index -1] == s[index +1]:
                tmp = self.verifyPalindrome(s, index -1, index +1)
                if len(tmp) >= len(ret):
                    ret = tmp
        return ret

    def verifyPalindrome(self, s, i, j):
        for var in range(1, len(s)):
            if (i - var) <0 or (j + var) >= len(s) or s[i-var] != s[j+var]:
                return s[i-var+1: j+var]



def main():
    test = Solution()
    strForTest = 'aaaa'
    print test.longestPalindrome(strForTest)

if __name__ == '__main__':
    main()
  • result: AC 但是感覺快要超時的樣子
    時間複雜度是O(n2) ,看到網上有動態規劃O(n) 的做法!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章