数据结构实验之串一:KMP简单应用
来源:互联网 发布:内窥镜图文工作站软件 编辑:程序博客网 时间:2024/06/04 00:33
#include <stdio.h>#include <stdlib.h>#include <string.h>int next[1000000];void getnext(char s[]){ int j=0,k=-1,len=strlen(s); next[0]=-1; while(j<len) { if(k==-1||s[j]==s[k]) { j++; k++; next[j]=k; } else { k=next[k]; } }}int kmp(char s1[],char s2[]){ int i=0,j=0,len1=strlen(s1),len2=strlen(s2); while(i<len1&&j<len2) { if(j==-1||s1[i]==s2[j]) { i++; j++; } else { j=next[j]; } } if(s2[j]=='\0') { return i-len2+1; } return -1;}int main(){ char s1[1000000],s2[1000000]; int x; while(gets(s1)!=NULL) { gets(s2); getnext(s1); x=kmp(s1,s2); printf("%d\n",x); } return 0;}
题目描述
给定两个字符串string1和string2,判断string2是否为string1的子串。
输入
输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。
输出
对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。
示例输入
abca12345645abcddd
示例输出
14-1
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简单应用
- 经验累积之数据库故障反映的存储问题
- UE4 数据保存到内存,时间的格式处理
- Android OKHttp介绍与使用(一)
- linux 安装redis数据库
- Android中gif动画
- 数据结构实验之串一:KMP简单应用
- Caffe学习笔记
- OFBIZ FTL模板乱码问题
- Git删除远程分支
- redis初步认识
- JAVA虚拟机入门(1)---------类文件结构 (下)
- C(C语言算法第一篇递归算法的使用)
- SQL STUFF涵数使用 SQL记录接拼字段,方便让SQL行记录转换成列 很方便
- saving HDU