最長迴文子串(百度筆試題和hdu 3068)
版權所有。所有權利保留。
歡迎轉載,轉載時請註明出處:
http://blog.csdn.net/xiaofei_it/article/details/17123559
求一個字串的最長迴文子串。注意子串是連續的,子序列是不連續的。對於最長迴文子序列,要用動態規劃解,具體請看:
http://blog.csdn.net/xiaofei_it/article/details/16813591
本題是百度筆試題,但和hdu 3068類似。所以直接給出hdu 3068的程式碼。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define MAX 230000
#define min(a,b) ((a)<(b)?(a):(b))
char s[MAX],str[MAX];
int i,len,id,mx,p[MAX];
int main()
{
while (scanf("%s",str)!=EOF)
{
s[0]='#';
len=strlen(str);
for (i=0;i<len;i++)
{
s[i*2+1]=str[i];
s[i*2+2]='#';
}
len=len*2+1;
p[0]=1;
mx=0;
id=0;
for (i=1;i<len;i++)
{
if (mx>=i)
{
if (2*id-i>=0)
p[i]=min(p[2*id-i],mx-i+1);
else
p[i]=mx-i;
}
else
{
p[i]=1;
}
for (;i+p[i]<len&&i-p[i]>=0&&s[i+p[i]]==s[i-p[i]];p[i]++);
if (p[i]+i-1>mx)
{
mx=p[i]+i-1;
id=i;
}
}
mx=0;
for (i=0;i<len;i++)
if (mx<p[i]-1)
mx=p[i]-1;
cout<<mx<<endl;
}
return 0;
}
相關文章
- HDU 3068 最長迴文(Manacher演算法解決最長迴文串問題)演算法
- java 最長迴文子串Java
- Amazon面試題:尋找最長迴文子串面試題
- 今日面試題:最長迴文子串;及迴文分割分析面試題
- hdu5371 最長迴文子串變形(Manacher演算法)演算法
- 演算法-兩最長迴文子串演算法
- LEECODE 5 求最長迴文子串
- [動態規劃] 六、最長迴文子串動態規劃
- LeetCode 5.最長迴文子串LeetCode
- 演算法之字串——最長迴文子串演算法字串
- 每天一道演算法題:最長迴文子串演算法
- Leetcode[字串] 5. 最長迴文子串LeetCode字串
- LeetCode-5. 最長迴文子串(Manacher)LeetCode
- 翻譯數字串;及最長迴文子串分析字串
- leedcode-最長迴文串
- 最長迴文子串 V2(Manacher演算法)演算法
- 程式碼隨想錄day46 || 647 迴文子串, 516 最長迴文子序列
- 每日一道 LeetCode (48):最長迴文子串LeetCode
- [LeetCode] Longest Palindromic Substring 最長迴文子串LeetCode
- ural 1297 最長迴文子串 字尾陣列陣列
- 最長子串
- LeetCode - 409 - 最長迴文串LeetCode
- lc1771 由子序列構造的最長迴文串的長度
- Leetcode5: Longest Palindromic Substring(最長迴文子串)LeetCode
- hihocoder 1032 最長迴文子串 (Manacher演算法 詳解+模板)演算法
- 程式碼隨想錄演算法訓練營 | 647. 迴文子串,516.最長迴文子序列演算法
- lCS(最長公共子串)
- L2-008 最長對稱子串【最長迴文字串】字串
- (迴文串)leetcode各種迴文串問題LeetCode
- [演算法筆記]動態規劃之最長公共子串和最長公共子序列演算法筆記動態規劃
- 程式碼隨想錄演算法訓練營day46| 647. 迴文子串 516.最長迴文子序列演算法
- 程式碼隨想錄演算法訓練營第五十七/天 | 516. 最長迴文子序列,647. 迴文子串演算法
- 線性dp:最長公共子串
- 【每日一題】無重複字元的最長子串每日一題字元
- leetcode 解題 5. 最長迴文子串 python@ 官解,暴力法,動態法,manacher 法LeetCodePython
- LeetCode516. 最長迴文子序列LeetCode
- 牛客題霸 [最長公共子串]C++題解/答案C++
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃