数据结构实验之串一:KMP简单应用
来源:互联网 发布:淘宝流量突然爆升爆降 编辑:程序博客网 时间:2024/05/16 18:44
给定两个字符串string1和string2,判断string2是否为string1的子串。
输入
输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。
输出
对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。
示例输入
abca12345645abcddd
示例输出
14-1提示要注意数字位置为下标加一源代码在C++环境下测试可正常运行仅供参考
#include<stdio.h>#include<stdlib.h>#include<string.h>char str1[1000001],str2[1000001];int next[1000001];void get_next(char str[],int next[]){ int k,j,n; n=strlen(str); j=0;k=-1; next[0]=-1; while(j<n-1) { if(k==-1||str[j]==str[k]) { j++; k++; next[j]=k; } else k=next[k]; }}int KMP(char str1[],char str2[]){ int i,j,m,n; i=-1;j=0; m=strlen(str1); n=strlen(str2); while(i<m&&j<n) { if(j==-1||str1[i]==str2[j]) { i++; j++; } else j=next[j]; } if(j>n-1) return i-n; else return -1;}int main(){ while(~scanf("%s",str1)) { int x; scanf("%s",str2); get_next(str2,next); x=KMP(str1,str2); if(x!=-1) printf("%d\n",x+1); else printf("%d\n",x); } return 0;}
0 0
- KMP算法 --数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- SDUT 2272 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- SDUT2772数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用 (sdut oj2772)
- 数据结构实验之串一:KMP简单应用
- sdut oj2772 数据结构实验之串一:KMP简单应用
- 数据结构实验之串一:KMP简单应用
- SDUT 2772 数据结构实验之串一:KMP简单应用
- poj2253 dijkstra()贪心解瓶颈路问题
- VC++实现Windows中双显示器(主屏、扩展屏)
- easyUI-combobox控件 (组合框)
- MAC平台2款文件传输管理安卓手机的神器
- 移动前端开发之viewport的深入理解
- 数据结构实验之串一:KMP简单应用
- EventBus源码阅读(4)-Subscription
- PopupWindow实现右侧、左侧和底部弹出菜单
- grunt搭建环境学习笔记
- Java enum的用法详解
- Docker Compose文件详解 V2
- jmeter 性能测试 结果分析
- SRID WKID 空间参考简介
- Android Fragment 真正的完全解析(下)