(算法分析Week6)Longest Palindromic Substring[Medium]
来源:互联网 发布:什么商品淘宝禁止出售 编辑:程序博客网 时间:2024/06/07 14:10
5. Longest Palindromic Substring
题目来源
Description
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"
Solution
Solution1:遍历整个字符串,把每一个字符当成中心向两边拓展,找到最长回文串。
Solution2:Manacher算法,具体可以参考[译+改]最长回文子串(Longest Palindromic Substring)
Complexity analysis
Manacher算法,O(n)
Code
class Solution {public: string longestPalindrome(string s) { string temp = "^#"; for (int i = 0; i < s.length(); i++) { temp += s[i]; temp += "#"; } temp += "&"; int length = temp.length(); int id = 0; int R = 0; int arr[length]; for (int i = 1; i < length - 1; i++) { int li = id - (i - id); int diff = R - i; if (diff >= 0) { if (arr[li] < diff) { arr[i] = arr[li]; } else { arr[i] = diff; while(temp[i+arr[i] + 1] == temp[i - arr[i] - 1]) { arr[i]++; } id = i; R = i+arr[i]; } } else { arr[i] = 0; while(temp[i+arr[i] + 1] == temp[i - arr[i] - 1]) { arr[i]++; } id = i; R = i+arr[i]; } } int max = 0; int center = 0; for (int i = 1; i < length-1; i++) { if (arr[i] > max) { max = arr[i]; center = i; } } return s.substr((center-max)/2, max); }};
Result
阅读全文
0 0
- (算法分析Week6)Longest Palindromic Substring[Medium]
- 5. Longest Palindromic Substring Medium
- 算法设计与分析(5)-- Longest Palindromic Substring(难度:Medium)
- Longest Palindromic Substring(算法分析week3)
- Longest Palindromic Substring算法
- 算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
- [Leetcode 5, Medium] Longest Palindromic Substring
- 【Leetcode】(5)Longest Palindromic Substring(Medium)
- Longest Palindromic Substring(medium 常考)
- Leetcode 5. Longest Palindromic Substring (Medium) (cpp)
- (Leetcode)5. Longest Palindromic Substring(medium)
- Medium 5题 Longest Palindromic Substring
- Medium 5题 Longest Palindromic Substring
- 5. Longest Palindromic Substring (Medium)
- Longest Palindromic Substring(leetcode medium algorithm problem)
- Manacher算法 //Longest palindromic substring
- 算法:LeetCode5. Longest Palindromic Substring
- Longest Palindromic Substring 算法总结
- hdu 1863 qsort+kruskral
- 计算斐波那契数列第n项值的方法
- Density-Based Spatial Clustering of Applications with Noise(DBSCAN密度聚类)
- 算法第六次作业
- 瞎忙活搞GayHub Pages博客
- (算法分析Week6)Longest Palindromic Substring[Medium]
- 阿里发布的规约插件,细节都在这里!!!
- 给定s1,s2,s3,发现是否通过s1和s2的交错形成s3。
- 16-面向对象(static关键字-什么时候用) 面向对象-Static难点 18-面向对象(构造代码块).(静态代码块)
- canvas 实现刮刮乐
- 广播与广播接受者简述
- 变量的声明与使用(常见的基础数据类型),运算符
- buntu vi 上下左右变ABCD问题
- 创立达摩院,马云是想当武林盟主吗?