码迷,mamicode.com
首页 > 其他好文 > 详细

2017.8.7 联考水题 Passward kmp/hash 字符串

时间:2017-08-07 20:40:41      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:hid   数据   分享   传说   技术分享   play   clu   close   中间   

你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s。

传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s 的后缀并且还在 s 的中间位置出现过一次。

如果存在这样的串,请你输出这个串,如有多个满足条件的串,输出最长的那一个。

如果不存在这样的串,输出"Just a legend"(去掉引号)。

输入格式:

仅一行,字符串 s。

输出格式:

如题所述

样例输入

fixprefixsuffix

样例输出:

fix

数据范围:

对于 60%的数据, s 的长度<=100

对于 100%的数据, s 的长度<=100000

solution

这个题真是水

但是我第三次 眼瞎?理解错题意?好像都有

出现过一次  与  只出现一次  真的不一样........

明明昨天的总结都说了这个事了...........

那再来个措施吧:  看题的时候全屏看,把字放到最大

技术分享
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 #define mem(a,b) memset(a,b,sizeof(a))
 5 using namespace std;
 6 const int N=100066;
 7 
 8 char s[N];
 9 int fail[N],n,len;
10 
11 void kmp()
12 {
13     n=strlen(s);
14     fail[0]=0;
15     fail[1]=0;
16     for(int i=2,k=0;i<=n;++i)
17     {
18         while(k&&s[i-1]!=s[k])
19           k=fail[k];
20         if(s[i-1]==s[k])
21           ++k;
22         fail[i]=k;
23     }
24 }
25 
26 void match()
27 {
28     int kk=n;
29     int flag=0;
30     while(fail[kk])
31     {
32         int sum=0;
33         len=fail[kk];
34         for(int i=0;i<len;++i)
35           s[i]=s[i];
36         for(int i=1,k=0;i<n-1;++i)
37         {
38             while(k&&s[i]!=s[k])
39               k=fail[k];
40             if(s[i]==s[k])
41               ++k;
42             if(k==len)
43               ++sum;
44         }
45         if(sum)
46         {
47             flag=1;
48           break;
49         }
50         kk=fail[kk];
51     }
52     if(flag)
53       for(int i=0;i<fail[kk];++i)
54         printf("%c",s[i]);
55     else
56       printf("Just a legend");
57 }
58 
59 int main(){
60     scanf("%s",s);
61     kmp();
62     match();
63     //while(1);
64     return 0;
65 }
code

 

2017.8.7 联考水题 Passward kmp/hash 字符串

标签:hid   数据   分享   传说   技术分享   play   clu   close   中间   

原文地址:http://www.cnblogs.com/A-LEAF/p/7300758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!