【leedcode】0005. 最长回文子串

简介: 【leedcode】0005. 最长回文子串

【leedcode】0005. 最长回文子串


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


示例 1:

输入: "babad"

输出: "bab"

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

示例 2:

输入: "cbbd"

输出: "bb"

方法一:

def PalindromeMax(s):
  Max,res = 0,''
  for i in range(len(s)):
    for j in range(i,len(s)):
      t = s[i:j+1]
      if t==t[::-1] and Max<j-i+1:
        Max,res = j-i+1,t
  return res
'''
>>> a,b = 'babad','cbbd'
>>> 
>>> PalindromeMax(a)
'bab'
>>> PalindromeMax(b)
'bb'
>>> 
'''


方法二: lambda表达式

Max = lambda s: max([(len(s[i:j]),s[i:j]) for i in range(len(s)) for j in range(i+1,len(s)+1) if s[i:j]==s[i:j][::-1]])[1]
'''
>>> a='babad'
>>> Max(a)
'bab'
>>> 
>>> b='cbbd'
>>> Max(b)
'bb'
>>> 
'''



方法三:中心扩散法

def PalindromeMax(s):
  Max,res = 0,''
  for i in range(len(s)):
    for j in range(2):
      L,R = i,i+j
      while L>=0 and R<len(s) and s[L]==s[R]:
        if Max<R-L+1:
          Max,res = R-L+1,s[L:R+1]
        L -= 1
        R += 1
  return res
'''
>>> a,b = 'babad','cbbd','I am HannYang'
>>> PalindromeMax(a)
'bab'
>>> PalindromeMax(b)
'bb'
>>> PalindromeMax(c)
'nn'
>>> 
'''




目录
相关文章
|
5天前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
34 1
|
5天前
|
机器学习/深度学习 算法
【动态规划刷题 17】回文子串&& 最长回文子串
【动态规划刷题 17】回文子串&& 最长回文子串
|
5天前
|
Java
每日一刷《剑指offer》字符串篇之左旋转字符串
每日一刷《剑指offer》字符串篇之左旋转字符串
41 0
每日一刷《剑指offer》字符串篇之左旋转字符串
|
10月前
|
人工智能
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
线性DP——AcWing 898. 数字三角形、AcWing 895. 最长上升子序列
58 0
|
11月前
Leecode 409. 最长回文串
Leecode 409. 最长回文串
26 0
|
11月前
Leecode 5. 最长回文子串
Leecode 5. 最长回文子串
29 1
|
11月前
|
机器学习/深度学习 算法
代码随想录训练营day57| 647. 回文子串 516.最长回文子序列
代码随想录训练营day57| 647. 回文子串 516.最长回文子序列
|
11月前
Leecode 18. 四数之和
Leecode 18. 四数之和
34 0
LeetCode每日一题(4)——字符的最短距离
LeetCode每日一题(4)字符的最短距离 1.题目 2.示例 3.思路 代码
|
算法 Go Python
LeetCode46:全排列(八皇后)
LeetCode46:全排列(八皇后)
LeetCode46:全排列(八皇后)