leetcode--5. Longest Palindromic Substring
来源:互联网 发布:流体力学 知乎 编辑:程序博客网 时间:2024/06/02 05:08
题目:5. Longest Palindromic Substring
链接:https://leetcode.com/problems/longest-palindromic-substring/description/
找到给定字符串的最长回文子串。写了O(n^2)的实现,搜了下有O(n)的算法,后面再来补上吧。
python:
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ if not s: return 0 delimiter = "#" s = delimiter + delimiter.join(s) + delimiter length=len(s) res="" ans="" maxlen=1 for i in range(length): tempmaxlen=1 left=right=i while s[left]==s[right]: if left!=right: tempmaxlen+=2 left-=1 right+=1 if left<0 or right>=length: break if tempmaxlen>maxlen: res=s[left+1:right] maxlen=tempmaxlen # print(res) for char in res.split(delimiter): ans += (char if char else "") return ans
O(n)的算法叫Manacher算法,参考其他人的这篇文章:http://blog.csdn.net/dyx404514/article/details/42061017
python:
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ if not s: return 0 delimiter = "#" s = delimiter + delimiter.join(s) + delimiter s="@"+s+"&" maxright=midpos=0 length=len(s) dp=[0]*length maxlength=1 res="" for i in range(1,length-1): if maxright>i: dp[i]=min(maxright-i,dp[2*midpos-i]) else: dp[i]=1 while s[i-dp[i]]==s[i+dp[i]]: dp[i]+=1 if i+dp[i]>maxright: maxright=i+dp[i] midpos=i if dp[i]>maxlength: res=s[i-dp[i]+1:i+dp[i]] maxlength=dp[i] return "".join(res.split(delimiter))
阅读全文
0 0
- LeetCode 5. Longest Palindromic Substring
- LeetCode --- 5. Longest Palindromic Substring
- LeetCode 5.Longest Palindromic Substring
- [Leetcode] 5. Longest Palindromic Substring
- [LeetCode]5.Longest Palindromic Substring
- [leetcode] 5. Longest Palindromic Substring
- LeetCode-5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- LeetCode 5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- LeetCode-5. Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring
- leetcode 5. Longest Palindromic Substring
- LeetCode *** 5. Longest Palindromic Substring
- 【leetcode】5. Longest Palindromic Substring
- python3如何解压缩.rar文件
- python2.7 pip 报错“Failed building wheel for …”解决办法
- HDOJ2108 Shape of HDU
- 【Spring Cloud】spring boot搭建+swagger-ui
- Nginx负载均衡多节点静态资源转发(单节点没有资源)处理
- leetcode--5. Longest Palindromic Substring
- HashMap详解
- 如何i自己创建利用百度搜索引擎的搜索框?
- HDOJ2109 Fighting for HDU
- TFS客户端连上后,没有生成下面的源代码管理器,visual studio.net版本不支持受源代码管理的项目
- JVM
- 关于VS项目平台的x86,x64,Any CPU以及Debug和Release
- Mybatis配置文件http://mybatis.org/dtd/mybatis-3-config.dtd报错
- Python网络编程 1.1 协议栈、编解码、IP