博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2594 Simpsons’ Hidden Talents【kmp】
阅读量:4949 次
发布时间:2019-06-11

本文共 996 字,大约阅读时间需要 3 分钟。

题目链接:

题意:读入串1和串2,输出串2的前缀和串1的后缀最长公共部分和长度。

思路:将串1作为子串s2,串2作为主串s1,套用kmp.

#include
#include
#define N 50010char s1[N],s2[N];int next[N],l1,l2;void get_next(){ int j,k; j = 0; next[0] = k = -1; while(j < l2) { if(k==-1||s2[j]==s2[k]) next[++j] = ++k; else k = next[k]; } return;}void kmp(){ int i,j,k; i = j = 0; while(i < l1) { if(j == -1||s1[i]==s2[j]) { i++; j++; } else j = next[j]; } if(!j)//当s1的后缀和s2前缀不匹配时 printf("0\n"); else { for(k = 0; k < j; k ++)//j是能匹配到s2前缀的长度 printf("%c",s2[k]); printf(" %d\n",j); } return;}int main(){ while(scanf("%s %s",s2,s1)!=EOF) {
//读入时,将第二行字符串作为主串,第一行字符作为子串 l1 = strlen(s1); l2 = strlen(s2); get_next();//建立next数组 kmp();//字符串前后缀匹配 } return 0;}

 

转载于:https://www.cnblogs.com/hellocheng/p/7559986.html

你可能感兴趣的文章
rails delegate机制
查看>>
FormsAuthentication类
查看>>
WebSocket是什么原理,为什么可以实现持久连接
查看>>
局域网电脑禁止ping通的解决方法
查看>>
用PowerShell部署WSP
查看>>
课程作业02.2
查看>>
CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]
查看>>
电子商务网站SQL注入项目实战一例
查看>>
JMeter学习(一)工具简单介绍
查看>>
Wix学习整理(5)——安装时填写注册表
查看>>
数据分析步骤
查看>>
【转】如何在 Windows 中执行干净启动
查看>>
MyBatis 缓存问题 session
查看>>
ThinkPHP框架知识的注意点
查看>>
平滑滤波(Smooth); java语言实现
查看>>
注意力的培养是学校教学的真正目的
查看>>
学习总结:机器学习(三)
查看>>
图论 邻接表实现 动态数组实现
查看>>
IP通信基础 第八周 第九周总结
查看>>
kali,parrot最新更新debain源
查看>>