@author: ZZQ

@software: PyCharm

@file: longestPalindrome.py

@time: 2018/9/18 20:06

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

e.g.: 输入: "babad"

输出: "bab"

注意: "aba"也是一个有效答案。

        输入: "cbbd"
输出: "bb"

思路:two pointer方法,考虑偶数子串和奇数子串两种可能。 从第一个字符开始,向左向右扫描,直到越界或是不满足对称要求,记录每次回文的长度和回文,保留最长的回文

class Solution():
def __init__(self):
pass def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
sub_len = 0
sub_longest_str = ""
for i in range(0, len(s)):
left = i-1
right = i+1
current_len = 1
while left >= 0 and right < len(s):
if s[left] != s[right]:
break
current_len += 2
left -= 1
right += 1
if current_len > sub_len:
sub_longest_str = s[left+1: right]
sub_len = current_len
left = i - 1
right = i
current_len = 0
while left >= 0 and right < len(s):
if s[left] != s[right]:
break
current_len += 2
left -= 1
right += 1
if current_len > sub_len:
sub_longest_str = s[left+1: right]
sub_len = current_len
return sub_longest_str if __name__ == "__main__":
answer = Solution()
print answer.longestPalindrome("a") # "cbbd"

Leetcode题库——5.最长回文子串的更多相关文章

  1. LeetCode之“字符串”:最长回文子串

    题目要求: 给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串.例如,给出字符串 "abcdzdcab",它的最长回文子串为 & ...

  2. Leetcode(5)-最长回文子串(包含动态规划以及Manacher算法)

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...

  3. LeetCode:Longest Palindromic Substring 最长回文子串

    题目链接 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  4. 转载:LeetCode:5Longest Palindromic Substring 最长回文子串

    本文转自:http://www.cnblogs.com/TenosDoIt/p/3675788.html 题目链接 Given a string S, find the longest palindr ...

  5. #leetcode刷题之路5-最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1:输入: "babad"输出: "bab"注意: " ...

  6. Leetcode(5)最长回文子串

    Leetcode(4)寻找两个有序数组的中位数 [题目表述]: 给定一个字符串 s,找到 s 中 最长 的回文子串.你可以假设 s 的最大长度为 1000.' 第一种方法:未完成:利用回文子串的特点 ...

  7. HDU 3068 最长回文 【最长回文子串】

    和上一题一样,不过这题只是要求最长回文子串的长度 在此采用了非常好用的Manacher算法 据说还是O(n) 的效率QAQ 详细用法参考了上篇博客的参考资料,这两天有空学习一下~ Source cod ...

  8. 【LeetCode每日一题 Day 5】5. 最长回文子串

    大家好,我是编程熊,今天是LeetCode每日一题的第五天,一起学习LeetCode第五题<最长回文子串>. 题意 给你一个字符串 s,找到 s 中最长的回文子串. 示例 输入:s = & ...

  9. LeetCode随缘刷题之最长回文子串

    这一题我用的相对比较笨的方法. 相对于大佬们用的动态规划法,比较复杂.但却更容易理解,我主要是通过记录下标来确定最长回文串的. package leetcode.day_12_06; /** * 给你 ...

随机推荐

  1. js replace 全局替换

    js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <script language="j ...

  2. 实现一个自定义event事件,包括on ,off,trigger,once

    on监听事件,off取消事件 ,trigger触发事件,once只执行一次 class Event { constructor() { this.handlers = {};//记录所有的事件以及处理 ...

  3. OpenID Connect Core 1.0(一)介绍

    IdentityServer4是基于OpenID Connect and OAuth 2.0框架,OpenID Connect Core 1.0是IdentityServer4最重要的文档 By 道法 ...

  4. SAP查找用户的登录记录

    1.可以使用USR02中有个上次登陆日期和登陆时间. 2.用SE38跑下RSUSR200,输入用户名即可查询上次登陆日期 3.SU10可以查到

  5. 查询红帽linux/Oracle Linux的发行版本的方法

    [root@localhost ~]# lsb_release -aLSB Version:    :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:grap ...

  6. JZOJ 10043 第k小数

    Description 有两个非负整数数列,元素个数分别为N和M.从两个数列中分别任取一个数相乘,这样一共可以得到NM个数,询问这NM个数中第K小数是多少. 时间限制为20ms . Input 输入文 ...

  7. Windows:任务调度器

    Windows 服务器系列: Windows:查看IP地址,IP地址对应的机器名,占用的端口,以及占用该端口的应用程 Windows:使用Dos命令管理服务(Services) Windows:任务调 ...

  8. Python无参装饰器

    需求:想要在test_func函数前后执行一些代码   1.第一步(定义函数,将调用原函数,使用新函数替换) def test_func(): return 'test_func' def test_ ...

  9. .net 控件生命周期

    这里列举出来了11个生命周期,一般的控件生命周期会经历这11个生命周期,但是有一些特别的控件比如页面控件System.Web.UI.Page等. 具体代码参考如下: /// <summary&g ...

  10. nGrinder性能测试平台的安装部署

    1.从GitHub下载war包: https://github.com/naver/ngrinder/releases 2.把ngrinder-controller-3.4.2.war重命名为ngri ...