LeetCode——Longest Palindromic Substring
来源:互联网 发布:稳定的网络怎么 编辑:程序博客网 时间:2024/05/22 13:51
LeetCode——Longest Palindromic Substring
Leedcode 第五题:
题目如下:
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.
题目翻译:
求解最大回文子串
关于其他时间复杂度的算法就不总结了,这里一起来看一看O(n)的算法——Manacher算法
关于Manacher算法:
http://www.felix021.com/blog/read.php?2040
http://blog.csdn.net/jarily/article/details/8630841
#include<iostream>#include<string>#include<vector>using namespace std;string longestPalindrome(string s) { vector<char> cvec; cvec.push_back('$'); cvec.push_back('#'); int i = 0; for(;i<s.size();i++) { cvec.push_back(s[i]); cvec.push_back('#'); } vector<int> ivec; int id = 0;//记录每个串的中心 int max = 0;//每个中心扩展的最大值 for(i=0;i<cvec.size();i++) { //if---else用于初始化记录每个回文子串的最大值的数组(这里用的vector容器) //其中每个i满足P[i] >= MIN(P[2 * id - i], mx - i),这里我们用p表示记录值的数组 if(max>i) { int temp = ivec[2*id-i]>max-i?max-i:ivec[2*id-i]; ivec.push_back(temp); } else ivec.push_back(1); //while循环即用于处理p[i]> MIN(P[2 * id - i], mx - i)的情况 while(cvec[i+ivec[i]] == cvec[i-ivec[i]]) { ivec[i] += 1; } if(ivec[i]+i>max) { max = ivec[i]+i; id = i; } } int mostlong = 0;//用于记录最大的值 int index = 0; for(i=0;i<ivec.size();i++) { if(mostlong<ivec[i]) { index = i;//记录最大的值的index mostlong = ivec[i]; } } //cout<<mostlong<<" "<<index; //分为奇数和偶数两种情况来返回要求的字符串 if(index%2==0) { index = index/2-1; int t = (mostlong-2)/2; string str(s.begin()+index-t,s.begin()+index+t+1); return str; } else { index /=2; int t = (mostlong-1)/2; string str(s.begin()+index-t,s.begin()+index+t); return str; }}int main(){string s = "cabab";cout<<longestPalindrome(s);return 0;}
0 0
- leetCode—Longest Palindromic Substring
- leetcode—Longest Palindromic Substring
- LeetCode——Longest Palindromic Substring
- leetcode——Longest Palindromic Substring
- leetcode 005 —— Longest Palindromic Substring
- LeetCode——Longest Palindromic Substring
- LeetCode题解——Longest Palindromic Substring
- LeetCode——5. Longest Palindromic Substring
- Leetcode——5. Longest Palindromic Substring
- leetcode 5—— Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- LeetCode Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [Leetcode] Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Leetcode : Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- IoC容器Autofac(1) -- 什么是IoC以及理解为什么要使用Ioc
- php+MySQL图书管理系统(二)
- AngularJS 作用域Scope的继承
- CSDN-Markdown语法集锦
- 阶段性总结
- LeetCode——Longest Palindromic Substring
- vmstat iostat 分析
- 欢迎使用CSDN-markdown编辑器
- 设计模式02_简单工厂模式
- uva673 栈 括号匹配
- Java基础之包装类的自动装箱和拆箱详解
- Bitmap用于数据查询和判重
- 最强开发资源平台大合集
- 再谈指针