leetcode-005 Longest Palindromic Substring
来源:互联网 发布:精灵虚拟光驱 mac 编辑:程序博客网 时间:2024/06/05 06:36
- P005 Longest Palindromic Substring
- 思路分析
- 代码
- 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
0 0
- 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
- 005 Longest Palindromic Substring [Leetcode]
- [LeetCode]005-Longest Palindromic Substring
- LeetCode 005 Longest Palindromic Substring
- leetcode Longest Palindromic Substring 005
- 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: Longest Palindromic Substring
- LeetCode Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [Leetcode] Longest Palindromic Substring
- TQ210 —— s5pv210 start.S分析
- [4] DevOps 自动化运维工具Chef----在Ubuntu上安装最新的Chef Client 12.13.37 并和Chef server关联起来
- 网页乱码分析
- HDU 5493 Queue(二分+树状数组)
- 几个名词解释:大数据、Hadoop、云计算、机器学习、NLP、数据挖掘
- leetcode-005 Longest Palindromic Substring
- linux下curses库介绍
- 通过异或运算交换两个整数的值
- .net平台个人理解
- Python从入门到放弃(一):概论
- Python从入门到放弃(二):核心数据类型
- Python从入门到放弃(三):基本语句和语法
- java中的内部类总结
- 棒棒哒的Go Interface