• 字符串:马拉车


    马拉车算法的原理这里不再叙述,这里贴上马拉车求最长回文子串的板子,其实马拉车可以把本质不同的回文串都找出来的

    回文自动机其实也可以完成同样的事情

    对字符串里面的特殊字符没有限制,什么情况都可以求

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cstring>
     5 using namespace std;
     6 
     7 const int maxn=100005;
     8 char ma[maxn*2];
     9 int mp[maxn*2];
    10 void manacher(char s[],int len)
    11 {
    12   int l=0;
    13   ma[l++]='$';
    14   ma[l++]='#';
    15   for(int i=0;i<len;i++)
    16   {
    17      ma[l++]=s[i];
    18      ma[l++]='#';
    19   }
    20   ma[l]=0;
    21   int mx=0,id=0;
    22   for(int i=0;i<l;i++)
    23   {
    24     mp[i]=mx>i?min(mp[2*id-i],mx-i):1;
    25     while(ma[i+mp[i]]==ma[i-mp[i]]&&(i-mp[i]>0))mp[i]++;
    26     if(i+mp[i]>mx)
    27     {
    28       mx=i+mp[i];
    29       id=i;
    30       }
    31  
    32     }
    33 }
    34 char s[maxn];
    35 int main()
    36 {
    37   //scanf("%s",s);
    38   gets(s);
    39   int len=strlen(s);
    40   manacher(s,len);
    41   int ans=0;
    42   for(int i=1;i<2*len+2;i++)
    43   ans=max(ans,mp[i]-1);
    44   printf("%d
    ",ans);
    45   return 0;
    46 }
  • 相关阅读:
    JQuery中$.ajax()方法参数详解
    overload和override的区别
    linux 安装jdk和tomcat
    linux链接外网手动设置
    RISC与CISCCPU构架
    32位与64位内存区别
    system 系统调用、gcc编译过程
    c helloworld
    C语言中 有符号数、无符号数、整数溢出 (转)
    samba安装
  • 原文地址:https://www.cnblogs.com/aininot260/p/9636515.html
Copyright © 2020-2023  润新知