算法分析与设计——LeetCode Problem.5 Longest Palindromic Substring
2018-03-09 17:09
447 查看
问题详情
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
问题分析及思路
可以直接遍历,对每一个字符,从它开始往后若字符与它相同,则先算入一个palindromic字符串中,然后在出现不同字符后,进行遍历,每次将这个字符(用left计算位置)的前一个字符与目前最后一个字符(用right计算位置)的后一个字符比较,若相同则继续,否则就返回。最后只需记录最大长度和它的开始字符的位置即可。还有另一种算法,看起来十分有意思,可以通过把字符串反过来,然后用动态规划求两个字符串之间的最大公共子串即可。
具体代码
class Solution { public: string longestPalindrome(string s) { if(s.length() < 2) return s; int i, max_len = 0, max_start, len = s.length(), left, right, mid; for(i = 0; i < len; i++) { left = i; right = i; while(right < len) { if(s[right] == s[right + 1]) { right++; } else break; } while(left > 0 && right < len - 1) { if(s[left - 1] == s[right + 1]) { left--; right++; } else break; } if(max_len < right - left + 1) { max_len = right-left+1; max_start = left; } } return s.substr(max_start, max_len); } };
相关文章推荐
- 算法分析与设计——LeetCode Problem.3 Longest Substring Without Repeating Characters
- [算法分析与设计] leetcode 每周一题:Longest Substring Without Repeating Characters
- 算法分析与设计——LeetCode:3. Longest Substring Without Repeating Characters
- 算法分析与设计——LeetCode Problem.3 Longest Substring Without Repeating Characters
- Longest Palindromic Substring (最长回文串)【面试算法leetcode】
- Longest Palindromic Substring[leetcode] O(n^2)的DP和O(n)的算法
- 每周LeetCode算法题(二):Longest Palindromic Substring
- leetcode 5 Longest Palindromic Substring(Manacher算法求最长回文串)
- python写算法题:leetcode: 5. Longest Palindromic Substring
- LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法
- 算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
- 【LeetCode-面试算法经典-Java实现】【005-Longest Palindromic Substring(最长回文子串)】
- LeetCode Longest Palindromic Substring 最长回文子字符串 两种方法分析解答
- (算法分析Week6)Longest Palindromic Substring[Medium]
- 【LeetCode-面试算法经典-Java实现】【05-Longest Palindromic Substring(最大回文字符串)】
- Leetcode:Longest Palindromic Substring之详细分析
- 【LeetCode-面试算法经典-Java实现】【05-Longest Palindromic Substring(最大回文字符串)】
- LeetCode题库解答与分析——#5.最长回文子串LongestPalindromicSubstring
- LeetCode 5 Longest Palindromic Substring(最长回文子串,暴力剪枝/DP/曼彻斯特算法)
- leetcode Longest Palindromic Substring 时间复杂度问o(n)的算法