URAL1297 最大回文字串

来源:互联网 发布:制作画册的软件 编辑:程序博客网 时间:2024/05/20 21:49

URAL 1297

求最长回文子串,本来这道题打算用后缀数组写的,没想到看到了这个,感觉以后用的上.于是就把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;}


0 0
原创粉丝点击