Problem Description

Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. 
Marge: Yeah, what is it? 
Homer: Take me for example. I want to find out if I have a talent in politics, OK? 
Marge: OK. 
Homer: So I take some politician’s name, say Clinton, and try to find the length of the longest prefix 
in Clinton’s name that is a suffix in my name. That’s how close I am to being a politician like Clinton 
Marge: Why on earth choose the longest prefix that is a suffix??? 
Homer: Well, our talents are deeply hidden within ourselves, Marge. 
Marge: So how close are you? 
Homer: 0! 
Marge: I’m not surprised. 
Homer: But you know, you must have some real math talent hidden deep in you. 
Marge: How come? 
Homer: Riemann and Marjorie gives 3!!! 
Marge: Who the heck is Riemann? 
Homer: Never mind. 
Write a program that, when given strings s1 and s2, finds the longest prefix of s1 that is a suffix of s2.

Input

Input consists of two lines. The first line contains s1 and the second line contains s2. You may assume all letters are in lowercase.

Output

Output consists of a single line that contains the longest string that is a prefix of s1 and a suffix of s2, followed by the length of that prefix. If the longest such string is the empty string, then the output should be 0. 
The lengths of s1 and s2 will be at most 50000.

Sample Input

clinton
homer
riemann
marjorie

Sample Output

0
rie 3

题意:每组数据给出两个字符串 s1、s2,判断是否存在 s1 的前缀是 s2 的后缀的情况,若没有则输出 0,若有则输出这个前缀/后缀与其长度

思路:KMP 的应用

本质上就是找前一个字符串的前缀和后一个字符串的后缀相同的串,使用 KMP 进行匹配时,注意当模式串 s1 到达结尾时,需要更新指针位置,返回值也需要返回前缀位置

Source Program

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-9
#define INF 0x3f3f3f3f
#define LL long long
const int MOD=20091226;
const int N=50001;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;int Next[N];
char str1[N],str2[N];
void getNext(char p[]){Next[0]=-1;int len=strlen(p);int j=0;int k=-1;while(j<len){if(k==-1||p[j]==p[k]) {k++;j++;Next[j]=k;}else{k=Next[k];}}
}
int KMP(char t[],char p[]){int tLen=strlen(t);int pLen=strlen(p);int i=0;int j=0;while(i<tLen&&j<pLen){if(j==-1||t[i]==p[j]){i++;j++;if(j==pLen&&i!=tLen){//当模式串到达结尾时,回到指定位置j=Next[j];}}else{j=Next[j];}}return j;//返回前缀的位置
}int main(){while(scanf("%s",str1)!=EOF){scanf("%s",str2);getNext(str1);int res=KMP(str2,str1);if(res!=0){str1[res]='\0';//截取前缀printf("%s %d\n",str1,res);}elseprintf("0\n");}return 0;
}

Simpsons’ Hidden Talents(HDU-2594)相关推荐

  1. HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)

    Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...

  2. Simpsons’ Hidden Talents(扩展KMP)

    Homer: Marge, I just figured out a way to discover some of the talents we weren't aware we had.  Mar ...

  3. Simpsons’ Hidden Talents(辛普森一家的隐藏天赋 )(kmp经典模板题) HDU - 2594

    题目:Simpsons' Hidden Talents(辛普森一家的隐藏天赋 ) 中文大意 Homer: Marge, I just figured out a way to discover som ...

  4. Simpsons’ Hidden Talents (HDU-2594)

    Simpsons' Hidden Talents (HDU-2594) Homer: Marge, I just figured out a way to discover some of the t ...

  5. 【 HDU - 2594 】Simpsons’ Hidden Talents(KMP应用,求最长前缀后缀公共子串)

    题干: Homer: Marge, I just figured out a way to discover some of the talents we weren't aware we had.  ...

  6. kmp总结(相关例题1. Simpsons’ Hidden Talents 2.Oulipo)

    kmp相关及相关例题 文章目录 kmp相关及相关例题 一.kmp算法最常规使用方法 二.相关例题 1. Simpsons' Hidden Talents 2.Oulipo 一.kmp算法最常规使用方法 ...

  7. HDU-2594-Simpsons’ Hidden Talents (kmp)

    Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...

  8. Simpsons’ Hidden Talents(KMP ,两个串的前后缀匹配)

    Simpsons' Hidden Talents 题目 给两个串,求S1的前缀和S2的后缀的最大匹配 思路 拼接两个串,处理出nxt数组,nxt[k] 即为所求,因为它们的最大匹配不能超过原串的长度, ...

  9. HDU2594(Simpsons’ Hidden Talents)

    Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...

最新文章

  1. 笔记 | 吴恩达Coursera Deep Learning学习笔记
  2. 自动驾驶中,激光雷达点云如何做特征表达
  3. Xamarin.Forms中为WebView指定数据来源Source
  4. 改变linux终端颜色
  5. vue 声明周期函数_【Vue】详解Vue生命周期
  6. 发力企业云,用友是要掉队,还是进击?
  7. 使用模板引擎artTemplate的几个问题总结
  8. HDU 1824 Let's go home
  9. 让我们用 SQL 开发一个图形数据库吧
  10. JavaEE持久层框架对比与hibernate主键生成策略总结
  11. 如何判定括号是否匹配
  12. Spring的IoC容器实现原理(一)#loadBeanDefinition
  13. unity3d 改变脚本名称_Unity3D脚本中文教程
  14. VS编译器的简单操作
  15. 支付宝小程序人脸识别认证
  16. STM32自定义创建工程模板
  17. 睿智的目标检测32——TF2搭建YoloV4目标检测平台(tensorflow2)
  18. python 如何实现依据依存关系构造邻接矩阵(有向图)
  19. Pt100转RS-485,热电阻温度Modbus数据采集模块 WJ125
  20. Shader——自发光效果

热门文章

  1. 一步一步学Remoting之二:激活模式
  2. 平均月薪超过1万的北京人是这样上班的|大数据解读(视频)
  3. “要源码上门自取”,结果人真上门了!国内企业再惹争议
  4. 彻夜怒肝!SpringBoot+Sentinel+Nacos高并发已撸完
  5. 华为发布会: 牛逼鸿蒙,吹水的大会
  6. 这 3 种 DDD 分层架构的模式,你掌握了么?
  7. 【消息队列MQ】各类MQ比较
  8. centos 6.5 yum安装mysql5.6
  9. 大数据之旅--Hadoop的发展史
  10. Attachments to close incidents