Good Luck!
Time Limit: 1000MS Memory limit: 65536K
题目描述
我们都知道,前缀就是一个单词的前几个字母(长度小于单词长度);后缀就是一个单词的后几个字母(长度小于单词长度)。例如:Hello,{H,He,Hel,Hell}都是Hello的前缀,{ello,llo,lo,o}都是Hello的后缀。现在,给你一个字符串String,你的任务是找出一个字串s,s既是String的前缀,又是String的后缀,并且s也出现在String的中间部分(既不是前缀,也不是后缀),s的长度越长越好。
输入
输入一个N,接下来N行,每行一个字符串String,String长度len( 1 <= len <= 1000000)。
输出
输出只有一行,如果有符合条件的s,输出长度最长的s,如果没有,输出“Bad Luck!”(不含引号)。
示例输入
3
abcabcabcabcabc
papapapap
aaabaaaabab
示例输出
abcabcabc
papap
Bad Luck!
提示
 KMP的题目,首先判断next[l],如果它是0的话 就没有相同前缀与后缀,如果不为0  那么现在next数组里面匹配,如果可以找到与next[l] 相同的数,即证明有中间的与前缀相同,输出。  如果没有 判断next[ next[l] ] ,判断原本的前缀有没有相同的,如果有,减小前缀,可以找到结果
来源
GLSilence
示例程序

#include <stdio.h>
#include <string.h>
char str[1000100] ;
int next[1000100] ;
void getnext()
{int j = 0 , k = -1 , l  = strlen(str);next[0] = -1 ;while(j <= l ){if(k==-1 || str[j] == str[k]){j++ ;k++;next[j] = k;}elsek = next[k] ;}/* for(int i=0;i<=l;i++)printf("%d ",next[i]);printf("\n");*/
}
int main()
{//freopen("data1.in","r",stdin);int i , n , l , j , flag ;scanf("%d", &n);for(i = 0 ; i < n ; i++){flag = 0 ;scanf("%s", str);l = strlen(str);getnext();if(next[l]==0){printf("Bad Luck!\n");continue;}for(j = 1 ; j < l ; j++)if(next[j]==next[l]){flag = 1;break;}if(flag){str[ next[l] ] = '\0' ;printf("%s\n", str);}else if(next[ next[l] ]>0){str[next[next[l] ]] = '\0';printf("%s\n", str);}elseprintf("Bad Luck!\n");}return 0;
}

原文:https://blog.csdn.net/winddreams/article/details/19421537

KMP之GoodLuck!相关推荐

  1. kmp求前缀和后缀的最大重复部分

    hdu 2594 kmp水题 求s1的前缀和s2的后缀重复度的最大值 2013-06-05 11:16 1199人阅读 评论(0) 收藏 举报  分类: KMP(8)  版权声明:本文为博主原创文章, ...

  2. BF算法优化-------KMP算法

    百度百科:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用 ...

  3. MUV LUV EXTRA 2019CCPC秦皇岛站J题 KMP

    题目链接 题意:意思给你俩数一个字符串,然后让你对字符串小数点后边的字符串进行处理,找个一个循环节以及对应出现的长度, 然后用a*p-b*l算得到一个最大值 那肯定循环节就想到了KMP了,然后循环长度 ...

  4. 数据结构与算法(5)字符串(BF算法、KMP算法及KMP算法优化)

    目录 一.BF算法(暴力算法) 二.KMP算法 三.KMP算法优化 一.BF算法(暴力算法) 一个一个往后匹配,匹配失败继续从母串下一个和头(子串的头)往后继续匹配. 虽然简单,但是需要较多的时间复杂 ...

  5. 字符串匹配算法 -- BM(Boyer-Moore) 和 KMP(Knuth-Morris-Pratt)详细设计及实现

    文章目录 1. 算法背景 2. BM(Boyer-Moore)算法 2.1 坏字符规则(bad character rule) 2.2 好后缀规则(good suffix shift) 2.3 复杂度 ...

  6. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

    震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...

  7. hiho 1015 KMP算法 CF 625 B. War of the Corporations

    #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  8. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

  9. 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串. 2.0 问题分析 "KMP算法"是对字符串查找"简单算法"的优化. 字符串查找"简单算法"是源 ...

最新文章

  1. UNITY3D拓展编辑器 - 目录
  2. Thread.Sleep(0) vs Sleep(1) vs Yeild
  3. javax.validation.ParameterNameProvider
  4. VC++创建个性的对话框之MFC篇
  5. 【Prometheus + Grafana】 使用 topk 在 grafana 绘制 前 n 个时间序列
  6. 四、CI框架之通过URL路径访问C中的函数
  7. 小米笔记本充电实测追求速度牺牲兼容性小米笔记本充电驱动_是海尔?也是雷神?不足1千克MixBook Air超轻薄笔记本...
  8. qt 不显示 mysql 数据表中的内容_qt 数据库操作总结
  9. eclipse安装Hadoop-0.20.2插件
  10. 文件包含漏洞的审计(审计思路)
  11. Chrome升级 76.0.3809.87后 GreenChrome无法使用的办法
  12. three.js 中的矩阵变换及两种旋转表达方式
  13. 【软件测试】测试用例详解
  14. 概率论与数理统计(陈希孺)笔记2.2
  15. php银行学生助学贷款管理系统
  16. html实现多文件打包下载 (mp4文件)
  17. 豆子特斯拉,豆箕宁德时代
  18. 一个页面播放多个视频
  19. 想从事Python后端开发?如何入门和学习,这篇文章来告诉你。
  20. 仿微信朋友圈图片点击放大效果

热门文章

  1. knn算法,最优k值求解
  2. CCIE-IGMPV2和IGMP SNOOPING
  3. 99乘法表与nn乘法表
  4. 全国计算机信息检索报告作业答案,计算机信息检索报告
  5. 文本信息隐藏方法综述
  6. OpenJudge 1.3-1 A+B问题
  7. cas-ESM 安装教程
  8. scp ssh: Could not resolve hostname d: Temporary failure in name resolution
  9. 计算机的屏幕约是16平方分米吗,电脑屏幕的面积大约是六平方分米对吗
  10. 【基于 Arduino 的 RFID门锁】