• KMP POJ 2752 Seek the Name, Seek the Fame


    题目传送门

     1 /*
     2     题意:求出一个串的前缀与后缀相同的字串的长度
     3     KMP:nex[]就有这样的性质,倒过来输出就行了
     4 */
     5 /************************************************
     6 * Author        :Running_Time
     7 * Created Time  :2015-8-10 11:29:25
     8 * File Name     :POJ_2752.cpp
     9  ************************************************/
    10 
    11 #include <cstdio>
    12 #include <algorithm>
    13 #include <iostream>
    14 #include <sstream>
    15 #include <cstring>
    16 #include <cmath>
    17 #include <string>
    18 #include <vector>
    19 #include <queue>
    20 #include <deque>
    21 #include <stack>
    22 #include <list>
    23 #include <map>
    24 #include <set>
    25 #include <bitset>
    26 #include <cstdlib>
    27 #include <ctime>
    28 using namespace std;
    29 
    30 #define lson l, mid, rt << 1
    31 #define rson mid + 1, r, rt << 1 | 1
    32 typedef long long ll;
    33 const int MAXN = 4e5 + 10;
    34 const int INF = 0x3f3f3f3f;
    35 const int MOD = 1e9 + 7;
    36 int nex[MAXN];
    37 char str[MAXN];
    38 
    39 void get_nex(void)  {
    40     int len = strlen (str);
    41     int i = 0, j = -1;  nex[0] = -1;
    42     while (i < len) {
    43         if (j == -1 || str[j] == str[i])    {
    44             j++;    i++;    nex[i] = j;
    45         }
    46         else    j = nex[j];
    47     }
    48     vector<int> ans;
    49     while (i != -1) {
    50         ans.push_back (i);  i = nex[i];
    51     }
    52     for (int i=ans.size ()-2; i>=0; --i)    {
    53         printf ("%d ", ans[i]);
    54     }
    55     puts ("");
    56 }
    57 
    58 int main(void)    {     //POJ 2752 Seek the Name, Seek the Fame
    59     while (scanf ("%s", str) == 1)  {
    60         get_nex ();
    61     }
    62 
    63     return 0;
    64 }
    编译人生,运行世界!
  • 相关阅读:
    软件测试(来自于网络)
    selenium常用命令
    新员工入门
    常用测试点
    测试leader职责
    软件测试 —— 用例设计4(读书分享)
    Tomcat 基础二
    Github Pull Request的提出与采纳
    Unix套接字接口
    健壮的I/O(RIO)
  • 原文地址:https://www.cnblogs.com/Running-Time/p/4717781.html
Copyright © 2020-2023  润新知