zoukankan      html  css  js  c++  java
  • seek

    题目:

    俗话说“好命不如好名”,小h准备给他的宠物狗起个新的名字,于是他把一些英文的名字全抄下来了,写成一行长长的字符串,小h觉得一个名字如果是好名字,那么这个名字在这个串中既是前缀,又是后缀,即是这个名字从前面开始可以匹配,从后面开始也可以匹配,例如abc在 abcddabc中既是前缀,也是后缀,而ab就不是,可是长达4*10^5的字符让小h几乎昏过去了,为了给自己的小狗起个好名字,小h向你求救,并且他要求要将所有的好名字的长度都输出来。

    输入:

    一行,要处理的字符串(都是小写字母)

    输出:

    一行若干个数字,从小到大输出,表示好名字的长度

    样例:


    abcddabc

    3 8

    KMP

    求出KMP中的next数组,在求一下next[strlen(s)-1]的方案

    #include<cstdio>
    #include<cstring>
    using namespace std;
    char b[500010];
    int n,m,a[500010],f[500010],cnt=0;
    
    int main()
    {
        scanf("%s",&b);
        n=strlen(b);
        f[0]=-1;
        int j=-1;
        for (int i=1;i<=n;i++)
        {
            j=f[i-1];
            while (b[j+1]!=b[i]&&j!=-1) j=f[j];
            if (b[j+1]==b[i]) f[i]=j+1;
            else f[i]=-1;
        }
        j=f[n-1];
        while (j>=0)
        {
            if (b[j]==b[n-1]) a[++cnt]=j+1;
            j=f[j];
        }
        for (int i=cnt;i>=1;i--)
            printf("%d ",a[i]);
        printf("%d
    ",n);
    }
    
    
  • 相关阅读:
    SSH框架——(二)四层结构:DAO,Service,Controller,View层
    Spring知识概括梳理
    设计模式——(一)工厂模式2
    设计模式——(一)工厂模式1
    Spring——(一)IoC
    Toad 实现 SQL 优化
    string 和String的区别
    StructureMap依赖注入
    Oracle/PLSQL: BitAnd Function
    log.debug(e.getMessage());
  • 原文地址:https://www.cnblogs.com/nibabadeboke/p/11346000.html
Copyright © 2011-2022 走看看