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

Example 1:                             Input: "babad"                         Output: "bab"                      Note: "aba" is also a valid answer.

Example 2:                             Input: "cbbd"                           Output: "bb"

思路:最简单的办法是使用暴力破解法,依此遍历每一个字符(基数情况)和相邻的两个字符(偶数情况)的情况来对比前后是最长相等的字符串,最后返回结果。但是时间复杂度太高为O(n3),如果字符串太长会直接超时。

    第二种是使用动态规划,我们使用辅助数组来存储回文情况,如果在判断P(i, j)时,p(i+1, j-1)时是回文,我们就不用在进行判断,只需要判断S[i] == s[j ]即可。从而减少时间复杂为O(n2), 空间复杂度为O(n2)(空间换时间思路)。

   第三种思路是我们从头开始遍历,然后以此为中心考虑基数个数和偶数个数的时候,得出最长字符串的结果。这样复杂度为O(n2),空间复杂度为O(1)。

图示思路


          

代码解决


 class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
if len(s) < : # 长度小于2直接返回
return s
res_str = ''
for i in range(len(s)): # 从头开始遍历
tem = self.find_par(s, i, i) # 以基数的形式进行查找最长回文 if len(tem) > len(res_str): # 比较大小
res_str = tem tem = self.find_par(s, i, i+) # 以偶数形式进行查找
if len(tem) > len(res_str):
res_str = tem
return res_str # 返回结果 def find_par(self, s, start, end): # 查找函数
while start >= and end < len(s) and s[start] == s[end]: # 以当前小标为基准,前后移动,知道不相等或者前后超出范围为止。
start -=
end +=
return s[start+: end] # 返回结果字符串

  

【LeetCode每天一题】Longest Palindromic Substring(最长回文字串)的更多相关文章

  1. 5. Longest Palindromic Substring -- 最长回文字串

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...

  2. Leetcode5.Longest Palindromic Substring最长回文字串

    给定一个字符串 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 lengt ...

  4. Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法)

    Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法) Given a string s, find the longest pal ...

  5. leetcode 第五题 Longest Palindromic Substring (java)

    Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may ...

  6. leetcode第五题--Longest Palindromic Substring

    Problem:Given a string S, find the longest palindromic substring in S. You may assume that the maxim ...

  7. [LeetCode] 5. Longest Palindromic Substring 最长回文子串

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  8. [leetcode]5. Longest Palindromic Substring最长回文子串

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  9. 【LeetCode】5. Longest Palindromic Substring 最长回文子串

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:最长回文子串,题解,leetcode, 力扣,python ...

随机推荐

  1. iOS - 极光推送证书的创建及过期处理

    无论iPhone还是安卓,我们用到的所有应用基本都有推送通知服务,因为这是应用很好的推广方式,有新产品了.有新更新了通知下用户及时查看.但Apple有点特殊,它的推送需要发到苹果服务器上中转一下,这就 ...

  2. DataGridView实时提交

    自定义了一个工具,根据DataGridView中的值进行其他操作.在DataGridView中修改了值,直接做其他操作时, 结果DataGridview中的值显示为a,则操作的属性却是没修改后的值b. ...

  3. 180623、Git新建远程分支和删除

    Git新建远程分支和删除 现在我在master分支上,工作目标是干净的,也没有需要commit的: $ git branch * master release $ git status On bran ...

  4. NPOI 自定义单元格背景颜色 XSSFWorkbook - Excel

    x 网上找到了,HSSFWorkbook自定义颜色的例子(讲的还挺细致的),但是XSSFWorkbook确没找到...研究了一下,坑掉了一地... NPOI.XSSF.UserModel.XSSFWo ...

  5. sklearn.utils.shuffle-训练数据打乱的最佳方法

    在进行模型训练前,我们要将数据打乱,以获得更好的训练效果.可以使用sklearn.utils中的shuffle,获得打乱后的数据索引,最后,迭代生成打乱后的batch数据,一个写好的模块如下. 思路是 ...

  6. 如何写好.babelrc?Babel的presets和plugins配置解析

    什么是Babel The compiler for writing next generation JavaScript. 官网是这么说的,翻译一下就是下一代JavaScript 语法的编译器. 作为 ...

  7. angular validation 使用总结

    我由于制作登陆界面,用到了angular-validation,结合ng-cookies,实现记住账户密码的功能.文档是https://github.com/hueitan/angular-valid ...

  8. Eclipse项目小红叉

    问题:导入自己本子上的项目后,出现小红叉,经检查jar包无误. 原因: 1. 之前电脑和现在电脑上的JDK 版本不一致or JRE 环境不一致,在项目右键菜单Build Path -->conf ...

  9. CHARACTER SET

    mysql> show tables; +-----------------+ | Tables_in_w0811 | +-----------------+ | t | | w_engine ...

  10. [administrator] rpmbuild

    rpmbuild 1.  rpm是什么 RPM = RPM Package Manager = Redhat Package Manager https://en.wikipedia.org/wiki ...