求最长回文子串,本来这道题打算用后缀数组写的,没想到看到了这个,感觉以后用的上.于是就把python和伪代码翻成c++了..
#include <stdio.h>
#include <string.h>
int maxs,maxl;
void LP(char *str)
{
maxs=maxl=0;
int sLen = strlen(str);
int lLen = 2 * sLen + 1;
for(int i=0; i<lLen; i++)
{
int s = i / 2;
int e= s + i % 2;
while(s > 0 &&e < sLen && str[s - 1] == str[e])
s--,e++;
if(e - s>maxl) maxs=s,maxl=e-s;
}
}
char s[1005];
int main()
{
while(scanf("%s",s)!=EOF)
{
LP(s);
for(int i=0;i<maxl;i++)
printf("%c",s[i+maxs]);
puts("");
}
return 0;
}

本文介绍了一种使用C++实现的寻找字符串中最长回文子串的方法。该方法通过一种特殊的扫描技术来高效地找到最长的回文序列,并提供了完整的代码示例。
709

被折叠的 条评论
为什么被折叠?



