Simpsons’ Hidden Talents【KMP模板题】

2023-10-30

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

  这道题就是输出前一个元素与后一个元素的最大前后缀匹配,就是先求一遍前缀的nex[]再对应比对最后一个串的最后一个元素的对应的K的值即可。


#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 5e4 + 7;
char s1[maxN], s2[maxN];
int nex[maxN], pre[maxN];
void cal_nex(int len)
{
    nex[0] = nex[1] = 0;
    int k = 0;
    for(int i=2; i<=len; i++)
    {
        while(k > 0 && s1[k+1] != s1[i]) k = nex[k];
        if(s1[k+1] == s1[i]) k++;
        nex[i] = k;
    }
}
int solve(int len)
{
    int k = 0;
    for(int i=1; i<=len; i++)
    {
        while(k > 0 && s1[k+1] != s2[i]) k = nex[k];
        if(s1[k+1] == s2[i]) k++;
        if(i == len) return k;
    }
    return 0;
}
int main()
{
    while(scanf("%s%s", s1 + 1, s2 + 1)!=EOF)
    {
        int len = (int)strlen(s1 + 1);
        cal_nex(len);
        int ans = solve((int)strlen(s2 + 1));
        if(ans == 0) { printf("0\n");   continue; }
        for(int i=1; i<=ans; i++) printf("%c", s1[i]);
        printf(" %d\n", ans);
    }
    return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Simpsons’ Hidden Talents【KMP模板题】 的相关文章

  • 从头到尾彻底理解KMP(2014年8月22日版)

    从头到尾彻底理解KMP 作者 xff1a July 时间 xff1a 最初写于2011年12月 xff0c 2014年7月21日晚10点 全部删除重写成此文 xff0c 随后的半个多月不断反复改进 后收录于新书 编程之法 xff1a 面试和
  • KMP算法

    一 何谓模式串匹配 模式串匹配 xff0c 就是给定一个需要处理的文本串 xff08 理论上应该很长 xff09 和一个需要在文本串中搜索的模式串 xff08 理论上长度应该远小于文本串 xff09 xff0c 查询在该文本串中 xff0c
  • ZJM 与纸条(KMP算法)

    问题描述 ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM 送生日礼物 ZJM 想知道自己收到的礼物是不是就是她送的 xff0
  • [week15] C - ZJM与纸条(选做)—— KMP算法

    文章目录 题意InputOutput输入样例输出样例提示 分析总结代码 题意 ZJM 的女朋友是一个书法家 xff0c 喜欢写一些好看的英文书法 有一天 ZJM 拿到了她写的纸条 xff0c 纸条上的字暗示了 ZJM 的女朋友 想给 ZJM
  • hdu 1358 Period KMP

    题目大意 xff1a 对于一个字符串 xff0c 找由循环字符串组成的位置 xff0c 并输出最多循环了几次 xff0c 比如两个样例 xff0c 第一个是 aaa xff0c 所以在第二个位置由子串a循环两次得到 xff0c 第三个位置由
  • 9.KMP算法

    KMP算法 1 KMP算法解决的问题 字符串str1和str2 xff0c str1是否包含str2 xff0c 如果包含返回str2在str1中开始的位置 xff0c 如果不包含返回 1 如果做到时间复杂度O N 完成 xff1f 测试用
  • KMP算法详解

    一 什么是KMP算法 KMP主要应用在字符串匹配上 KMP的主要思想是当出现字符串不匹配时 通过已知一部分之前已经匹配的内容 避免从头再去做匹配 所以KMP算法的重点就是如何记录已经匹配的信息 也就是next 数组的实现 二 什么是next
  • 数据结构与算法(29):KMP算法(核心思想分析)及其相关应用实例(与暴力字符串匹配代码实现)

    应用场景 字符串匹配问题 字符串匹配问题 有一个字符串 str1 陈骁聪 陈骁聪你陈骁 陈骁聪你陈骁聪你陈骁你好 和一个子串 str2 陈骁聪你陈骁你 现在要判断 str1 是否含有 str2 如果存在 就返回第一次出现的位置 如果没有 则
  • Simpsons’ Hidden Talents【KMP模板题】

    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
  • 超详细超全超好理解的KMP算法

    定义 KMP算法是一种字符串匹配算法 用于在一个主串中查找一个模式串的出现位置 先看这个视频 再看下边的代码实现 油管阿三哥讲KMP查找算法 中英文字幕 人工翻译 简单易懂 https www bilibili com video BV18
  • 剪花布条 【HDU - 2087】【KMP模板题】

    KMP教学链接 不懂的可以在线问 题意 2个字符串A B 问A中有多少个字符串B Input 输入中含有一些数据 分别是成对出现A B A和B不会超过1000个字符 如果遇见 字符 则表示测试结束 Output 输出B的个数 每个结果之间应
  • KMP算法之基础思想篇

    KMP算法是快速求字符串P 是不是字符串S的子串的一个算法 具体案例呢 可以看力扣的28题 实现 strStr 题意也很简单 就是找出P在S中出现的第一个位置 实际上就是找子串 这种最简单的方法就是暴力 直接两层for循环 O n m 的复
  • 使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile (KMM) 开发

    使用共享 MVI 架构实现高效的 Kotlin Multiplatform Mobile KMM 开发 文章中探讨了 Google 提供的应用架构指南在多平台上的实现 通过共享视图模型 View Models 和共享 UI 状态 UI St
  • 《数据结构》实验报告四:串的模式匹配(BF算法、KMP算法)

    一 实验目的 1 了解串的基本概念 2 掌握串的模式匹配算法的实现 二 实验预习 说明以下概念 1 模式匹配 串的模式匹配就是子串的定位运算 设有两个字符串 S 和 T S为主串 正文串 T为子串 模式串 在主串S中查找与模式串T相匹配的子
  • 求字符串可匹配的最大长度

    如 text abcdlijkfgd query abcdefg 最大匹配为 abcd 为4 编写一个函数 求字符串可匹配的最大长度 如果是完全匹配 则用很多种方法 如BF KMP sunday等字符串匹配算法 KMP是比较常见的 其思想也
  • kmp算法(最简单最直观的理解,看完包会)

    本文将以特殊的方式来让人们更好地理解kmp算法 不包括kmp算法的推导 接下来 我们将从朴素算法出发 在这之前 我们先设主串为S 模式串为T 我们要解决的询问是主串中是否包含模式串 即T是否为S的子串 版权声明 本文为原创文章 转载请标明出
  • C/C++实现strstr函数、KMP算法查找子串

    C C 实现strstr KMP算法查找子串 目录 C C 实现strstr KMP算法查找子串 1 字符串形式 2 字节流形式 1 字符串形式 代码实现 char my strstr const char src const char d
  • 数据结构中Java实现KMP与BF算法对比

    public class KMPANDBF public int indexBfCount SeqString s SeqString t int begin int slen tlen i begin j 0 int count 0 sl
  • Count the string【KMP】

    It is well known that AekdyCoin is good at string problems as well as number theory problems When given a string s we ca
  • KMP比较简单的讲法。

    转载链接 http blog csdn net yearn520 article details 6729426 我们在一个母字符串中查找一个子字符串有很多方法 KMP是一种最常见的改进算法 它可以在匹配过程中失配的情况下 有效地多往后面跳

随机推荐

  • 从java环境配置到成功使用VOSviewer

    本文的目的是分享如何快速安装和使用VOSviewer B站包括csdn很多信息都是分散的 找资源会浪费很多时间 本文帮助小白快速高效的安装VOSviewer 第一步 下载安装包 下载方法一 如果电脑当中没有配置过java环境 可以参考下面的
  • C# 通过文件结构直接生成xls(Excel)文件

    以下代码演示了 直接通过excel可以识别的文件结构生成xls文件的方法 这样就可以不引用麻烦的ole了 using System using System Collections Generic using System Text nam
  • 安信可ESP32-CAM修改Web网页源代码

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 安信可ESP32 CAM修改Web网页源代码 前言 一 使用CyberChef将数组转义成 HTML 二 使用CyberChef将 HTML转义成数组 参考 前言 安信可ES
  • 毕业设计-基于机器视觉的虹膜图像人眼定位及分类算法-yolo

    目录 前言 课题背景和意义 实现技术思路 一 算法基础 二 EL YOLO模型 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的
  • 两个蓝牙模块HC-05的主从机匹配

    两个蓝牙模块HC 05的主从机匹配 1 HC 05蓝牙模块知识 1 1 两种工作模式 1 2 进入命令响应工作模式 1 3 什么叫做置高一次PIO11 1 4 怎么区分进了命令响应工作模式呢 1 5 串口调试助手发送AT命令格式 2 AT命
  • C#调用Python脚本训练并生成AI模型(以Paddle框架为例)

    目录 一 C 调用通过IronPython语言移植 1 1 IronPython安装 1 2 示例代码 1 3 运行结果 1 4 特点 二 C 调用Python文件打包dll 2 1 步骤 2 1 1 Cython生成python脚本预编译
  • 面试--竞品分析,会随时补充

    面试题 小型竞品分析 对于一般的竞品分析 可以参照产品的五要素 分别从产品的五要素进行分析 战略层 企业和用户对于产品的期望和目标是什么 范围层 产品的功能和内容需求集合 结构层 确定要呈现给用户的选项和呈现模式 及交互设计和信息架构 框架
  • 【计算机视觉

    文章目录 一 分割 语义相关 20篇 1 1 VideoCutLER Surprisingly Simple Unsupervised Video Instance Segmentation 1 2 Compositional Semant
  • es6链判断运算符和null的判断运算符

    链判断运算符 JavaScript在实际编程中 如果读取对象内部的某个属性 往往需要判断一下 需要判断属性的上层对象是否存在 比如 读取 dataList userInfo firstName这个属性 安全的写法是写成下面这样 let da
  • 【微信小程序】小程序之间跳转(路由)参数传递及跳转方式详解和封装

    今天我们来说道说道微信小程序里面当中的几种跳转方式 微信小程序跳转的方式总共有5种 可以对应各种的应用场景 1 wx navigateTo 保留当前页面 跳转到应用内的某个页面 但是不能跳到 tabbar 页面 可封装函数为 跳转新页面页面
  • 项目中没有 requirements.txt

    项目下创建一个文件 autoinstall py 复制下面的代码 在项目最开始加入import autoinstall 直接运行项目即可 import sys import os from importlib import import m
  • 《机器学习有意思! 01》- 世界上最简单的机器学习入门

    本文首发于https jizhi im blog post ml is fun 01 你是否也曾听人们谈起机器学习但是只有一个朦胧的概念 你是否厌倦了在同事的高谈阔论中颓然欲睡 此诚求变之机 本教程适合所有对机器学习感到好奇 却不知从何下手
  • js的垃圾回收机制

    js 垃圾回收机制 GC 1 GC garbage collection js具有 自动 垃圾回收机制 即执行环境会负责管理代码执行过程中使用的内存 2 GC会定期 周期性的 找出那些不再继续使用的变量 然后释放其内存 3 不再使用的变量即
  • MySQL之explain 的type列 & Extra列

    explain 可以分析 select 语句的执行 即 MySQL 的 执行计划 一 type 列 MySQL 在表里找到所需行的方式 包括 由左至右 由最差到最好 All index range ref eq ref const syst
  • QT 基础布局类总结

    文章目录 系列文章目录 前言 一 水平布局 二 垂直布局 三 网格布局 总结 前言 1 水平布局 垂直布局 网格布局均放置于QGroupBox中 2 继承QWidget类 在构造函数中调用setLayout 函数 即可完成布局 一 水平布局
  • 经典面试智力题200+题和解答

    招聘时期到了 总少不了需要准备智力题 考来考去大多是各种旧题 本来是考智力的事情 现在几乎已经变成了题海战术的考试 所以我们也不能在这一块落后 学习各种奇巧淫技 扩展一下思路 同时免得笔试面试吃亏 搜集了大量智力题 有些还挺有意思 顺便活跃
  • EnPass+WebDAV(一个跨平台密码管理解决方案)

    使用 EnPass密码管理软件 和 坚果云WebDAV 服务来搭建一个跨平台的密码管理方案 前言 相信很多人仍然处于 一个密码走天下 这一状态 但这种情况在当今互联网时代无异于裸奔 各种服务器漏洞造成的密码泄露 还有 撞库 等连锁反应 所以
  • 如何巧妙拒绝别人,搭配Online有小妙招

    相信很多人都会有拒绝别人的烦恼 一旦开口拒绝 难免会得罪人 如果答应下来 自己又无力帮助 这时往往存在矛盾冲突关系 那么如何解决这个问题呢 搭配Online提醒您要注意巧妙拒绝方面的技巧啦 1 耐心倾听对方的请求 即使心里清楚自己最后要拒绝
  • 新榜

    在过去的一个月中 淄博烧烤的相关话题霸屏网络 这些媒介话题里承载了多少受众的向往与想象 根据2022年淄博市文旅局公开年报 去年 淄博官方就着力融媒体 在抖音 快手等平台创新使用 淄博到底有多牛 主题形式 通过视频内容和文案策划 长效推广淄
  • Simpsons’ Hidden Talents【KMP模板题】

    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