【Leetcode】【python】Longest Palindromic Substring
2017-08-08 04:23
423 查看
题目大意
给出一个字符串S,找到一个最长的连续回文串。解题思路
动态规划dp[i][j] 表示的是 从i 到 j 的字串,是否是回文串。
则根据回文的规则我们可以知道:
如果s[i] == s[j] 那么是否是回文决定于 dp[i+1][ j - 1]
当 s[i] != s[j] 的时候, dp[i][j] 直接就是 false。
动态规划的进行是按照字符串的长度从1 到 n推进的。
代码
class Solution(object): def getlongestpalindrome(self, s, l, r): while l >= 0 and r < len(s) and s[l] == s[r]: l -= 1; r += 1 return s[l+1 : r] # 例如bab,最后l=-1,r=3,所以要s[l+1 : r]也就是[0,3] def longestPalindrome(self, s): """ :type s: str :rtype: str """ palindrome = '' for i in range(len(s)): len1 = len(self.getlongestpalindrome(s, i, i)) # len1是中间是单一字母的回文数 if len1 > len(palindrome): palindrome = self.getlongestpalindrome(s, i, i) len2 = len(self.getlongestpalindrome(s, i, i + 1)) # len2是中间是和后面一个字母相同的回文数 if len2 > len(palindrome): palindrome = self.getlongestpalindrome(s, i, i + 1) return palindrome
总结
回文有两种可能:aba和abba相关文章推荐
- leetcode-05- Longest Palindromic Substring-python
- LeetCode 5 Longest Palindromic Substring(C,C++,Python,Java)
- python写算法题:leetcode: 5. Longest Palindromic Substring
- LeetCode 5.Longest Palindromic Substring (Python)兼翻译
- [LeetCode]题解(python):005-Longest Palindromic Substring
- (python)leetcode刷题笔记05 Longest Palindromic Substring
- [leetcode]Longest Palindromic Substring @ Python
- leetcode Longest Palindromic Substring python
- [LeetCode] 005. Longest Palindromic Substring (Medium) (C++/Java/Python)
- [LeetCode]5 Longest Palindromic Substring(C++,Python实现)
- Longest Palindromic Substring Leetcode Python Java
- 【leetcode】5. Longest Palindromic Substring(Python & C++)
- leetcode python - Longest Palindromic Substring
- python学习——leetcode第五题 Longest Palindromic Substring
- Leetcode 5. Longest Palindromic Substring The Solution of Python
- [LeetCode]Longest Palindromic Substring@python
- Leetcode_longest-palindromic-substring(c++ and python version)
- Longest Palindromic Substring - Leetcode
- LeetCode 5 Longest Palindromic Substring
- 【leetcode】Longest Palindromic Substring