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) 的做法!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值