leetcode-005 Longest Palindromic Substring
2016-09-16 00:53
393 查看
P005 Longest Palindromic Substring
思路分析
代码
java
python
从某个中点(middle)向两边扫描之道不是回文
中点紧邻的两个点记为left和right
left 和 right有可能相等(字符串长度为偶数时)
直到不是回文的时候将该轮循环的子串和上轮做比较取较长者
遍历所有的可能性—O(n^2)
思路分析
代码
java
python
P005 Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.思路分析
最长回文最简单最直观的思路就是:从某个中点(middle)向两边扫描之道不是回文
中点紧邻的两个点记为left和right
left 和 right有可能相等(字符串长度为偶数时)
直到不是回文的时候将该轮循环的子串和上轮做比较取较长者
遍历所有的可能性—O(n^2)
代码
java
public class Solution005 { private String longestPalindrome(String s, int left, int right) { while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) { left--; right++; } return s.substring(left + 1, right); } public String longestPalindrome(String s) { if (s == null || s.length() == 0) return ""; String ret = ""; for (int i = 0; i < s.length() * 2 - 1; i++) { int left = i / 2; int right = i / 2; if ((i & 1) == 1)// 奇数 right++; String tmp = this.longestPalindrome(s, left, right); if (ret.length() < tmp.length()) ret = tmp; } return ret; } }
python
class Solution005(object): def longestStr(self, s, left, right): l = len(s) while left >= 0 and right < l and s[left] == s[right]: left -= 1 right += 1 return s[left + 1:right] def longestPalindrome(self, s): """ :type s: str :rtype: str """ if not s : return "" ret = "";i = 0 for i in range(len(s) * 2 - 1): left = i / 2 right = i / 2 if (i & 1) == 1:right += 1 tmp = self.longestStr(s, left, right) if len(tmp) > len(ret):ret = tmp return ret
相关文章推荐
- 【LeetCode】 005. Longest Palindromic Substring
- LeetCode 005: Longest Palindromic Substring
- [LeetCode 解题报告]005.Longest Palindromic Substring
- LeetCode 005 Longest Palindromic Substring
- [LeetCode]005-Longest Palindromic Substring
- 【LeetCode-面试算法经典-Java实现】【005-Longest Palindromic Substring(最长回文子串)】
- LeetCode 005 Longest Palindromic Substring
- LeetCode 005 Longest Palindromic Substring
- LeetCode-005 Longest Palindromic Substring
- leetcode-005:Longest Palindromic Substring
- [LeetCode]题解(python):005-Longest Palindromic Substring
- [LeetCode] 005. Longest Palindromic Substring (Medium) (C++/Java/Python)
- 【LeetCode】005 Longest Palindromic Substring 最长的回文子字符串
- LeetCode-005 Longest Palindromic Substring
- LeetCode005__Longest Palindromic Substring
- 【LeetCode】005.Longest Palindromic Substring
- 【JAVA、C++】LeetCode 005 Longest Palindromic Substring
- Leetcode_005_Longest_Palindromic_Substring
- [LeetCode]-005-Longest Palindromic Substring
- 2017-09-07 LeetCode_005 Longest Palindromic Substring