数据结构--KMP简单应用
2016-10-30 11:24
387 查看
数据结构实验之串一:KMP简单应用
Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic
Problem Description
给定两个字符串string1和string2,判断string2是否为string1的子串。
Input
输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。
Output
对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。
Example Input
abc a 123456 45 abc ddd
Example Output
1 4 -1
#include<stdio.h> #include<stdlib.h> #include<string.h> void getnext(int next[],char p[]) { int i = 0,j = -1; next[0] = -1; int len = strlen(p); while(i<len) { if(j == -1|| p[i] == p[j]) { i++; j++; if(p[i] != p[j]) next[i] = j; else next[i] = next[j]; } else j = next[j]; } } int kmp(char s[], char p[]) { int i = 0,j = 0; int next[1000001]; int len1 = strlen(s); int len2 = strlen(p); getnext(next,p); while(i < len1 && j < len2) { if(j == -1|| s[i] == p[j]) { i++; j++; } else j = next[j]; } if(j < len2) return -1; else return i-len2+1; } int main() { char s[1000001], p[1000001]; int n; while(gets(s)) { gets(p); int t = kmp(s,p); if(t==-1) printf("-1\n"); else printf("%d\n",t); } return 0; }
相关文章推荐
- HDU 1867 A + B for you again 数据结构+KMP简单应用
- 数据结构在游戏中的简单应用(2)
- 数据结构在游戏中的简单应用(转)
- 十一、Python简单数据结构应用(之…
- 寒假训练--KMP--KMP简单应用
- SDUTOJ KMP简单应用 【KMP】
- 在游戏中数据结构的简单应用
- KMP简单应用
- 【数据结构】栈的编写以及栈的简单应用
- hdu——1166(数据结构之树状数组的简单应用)
- KMP简单应用
- 数据结构在游戏中的简单应用
- 数据结构单链表的简单应用
- poj 2406 还是KMP的简单应用
- 十二、Python简单数据结构应用(之…
- 数据结构在游戏中的简单应用
- 数据结构-------树与二叉树的几个简单应用
- 数据结构在游戏中的简单应用
- POJ 2406 kmp简单应用
- KMP简单应用