lintcode 中等题:Longest Palindromic Substring 最长回文子串
2015-11-12 15:41
351 查看
题目
样例
给出字符串
挑战
O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。
解题
遍历字符串所有位置,对每个位置左右对等的找回文串,主要要分为两种形式
1.bab形式
2.bb形式
对找到的回文串保留最长的那个就是答案
Python Code
总耗时: 865 ms
最长回文子串
给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。样例
给出字符串
"abcdzdcab",它的最长回文子串为
"cdzdc"。
挑战
O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。
解题
遍历字符串所有位置,对每个位置左右对等的找回文串,主要要分为两种形式
1.bab形式
2.bb形式
对找到的回文串保留最长的那个就是答案
class Solution: # @param {string} s input string # @return {string} the longest palindromic substring def longestPalindrome(self, s): # Write your code here res = "" longest = -1 if s == None or len(s) == 1: return s for i in range(1,len(s)): res1 = self.longPalindrome(s,i,i) res2 = self.longPalindrome(s,i-1,i) if len(res1)> len(res2) and len(res1)>longest: res = res1 longest = len(res1) elif len(res2)> len(res1) and len(res2) >longest: res = res2 longest = len(res2) return res def longPalindrome(self,s,start,end): tmp1 = start tmp2 = end while start>=0 and end<len(s) and s[start] == s[end]: start-=1 end +=1 if tmp1==start and tmp2 == end: return s[start] return s[(start+1):end]
Python Code
总耗时: 865 ms
相关文章推荐
- URI和URL的区别
- [并发并行]_[Object-C]_[使用NSMutableArray等非线程安全集合类的注意事项]
- Java程序员到架构师的推荐阅读书籍
- CHM文件打开 右边内容是空白
- PHP颜色随机生成器
- [并发并行]_[Object-C]_[使用NSMutableArray等非线程安全集合类的注意事项]
- 决策树ID3
- 第一章:SolrCloud4.9+zookeeper在CentOS上的搭建与安装
- vmware fusion8虚拟机win10桥接无法上网的问题
- DOM
- 生成数字+英文字母大小写彩虹字符集(6位),共有62^6种可能
- plist 文件
- spark-submit [options]
- Java关键字final、static使用总结
- html css基础(一)
- iOS 二维码的生成 QREncoder
- 关于PCT_FREE 和PCT_USED 参数详解
- 关于数据挖掘中“多重共线性”的确定方法(有图有真相)
- Java基础语法总结(一)
- Node.js中的数组和javascript中的数组使用区别