• POJ 2752 Seek the Name, Seek the Fame(求所有既是前缀又是后缀的子串长度)


    题目链接:http://poj.org/problem?id=2752

    题意:给你一个字符串,求出所有前缀后缀(既是前缀又是后缀的子串)的长度

    思路:首先整个字符串肯定既是前缀又是后缀,为最大的前缀后缀。

    假设next[len] = k,也即:s[1,k] = s[len-k+1,len]此时s[1,k]是前缀后缀。

    处理完next[len]后跳转到next[k+1],用这种方法可以得到所有的前缀后缀。

    code:

     1 #include <cstdio>
     2 #include <cstring>
     3 const int MAXN = 400005;
     4 char str[MAXN];
     5 int next[MAXN];
     6 int ans[MAXN];
     7 void GetNext(int len)
     8 {
     9     int i = 0;
    10     int j = -1;
    11     next[0] = -1;
    12     while (i < len)
    13     {
    14         if (-1 == j || str[i] == str[j]) next[++i] = ++j;
    15         else j = next[j];
    16     }
    17 }
    18 
    19 int main()
    20 {
    21     while (scanf("%s", str) == 1)
    22     {
    23         int len = strlen(str);
    24         GetNext(len);
    25         int t = -1;
    26         ans[++t] = len;
    27         while (next[len] > 0)
    28         {
    29             ans[++t] = next[len];
    30             len = next[len];
    31         }
    32         for (int i = t; i > 0; --i) printf("%d ", ans[i]);
    33         printf("%d
    ", ans[0]);
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    Object C学习笔记2-NSLog 格式化输出数据
    NSPoint 位置
    NSNull空值
    工商银行卡 安全码是什么
    查看苹果开发者账号类型
    IOS中录音后再播放声音太小问题解决
    解决RegexKitLite导入报错问题
    iOS开发--OC常见报错
    UIImagePickerController
    UIPageViewController
  • 原文地址:https://www.cnblogs.com/ykzou/p/4468945.html
Copyright © 2020-2023  润新知