KMP简单应用
来源:互联网 发布:淘宝上网 编辑:程序博客网 时间:2024/05/01 05:46
题目描述
给定两个字符串string1和string2,判断string2是否为string1的子串。
输入
输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。
输出
对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。
示例输入
abca12345645abcddd
示例输出
14-1
#include <stdio.h>#include <string.h>#include <stdlib.h>char str1[1000050],str2[1000050];int next[1000050];void get_next(){ int i=0,j=-1; next[0]=-1; int len=strlen(str2); while(i<len) { if(j==-1||str2[i]==str2[j]) { i++; j++; next[i]=j; } else j=next[j]; }}void kmp(){ int j=0,i=0; int len1=strlen(str1); int len2=strlen(str2); while(i<len1&&j<len2) { if(j==-1||str1[i]==str2[j]) { i++; j++; } else j=next[j]; } if(j>=len2) printf("%d\n",i-len2+1); else printf("-1\n");}int main(){ while(~scanf("%s%s",str1,str2)) { get_next(); kmp(); } return 0;}
0 0
- SDUTOJ KMP简单应用 【KMP】
- KMP简单应用
- SDUT KMP简单应用
- kmp简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- oj2772 KMP简单应用
- kmp的简单应用
- HDU 3360 National Treasures 黑白染色+最小点覆盖 ACM Steps 6.3.8
- 高完整性代理(IE安全模式)
- 深入解析String#intern
- 关于storyboard和xib的小Tips
- java基础知识:java方法传参机制
- KMP简单应用
- 虚方法 oc
- 见证奇迹的时刻 70平老房重新焕发魅力
- uva 108 Maximum Sum 最大子矩阵和
- 102Binary Tree Level Order Traversal (java)
- light oj 1013 LCS 应用
- 类成员函数指针
- 网上处方药物手册Rxlist 及其药学信息资源
- 使用mybatis开发原始dao