数据结构实验之串一:KMP简单应用
来源:互联网 发布:手机淘宝底部导航设置 编辑:程序博客网 时间:2024/05/22 08:29
Problem Description
给定两个字符串string1和string2,判断string2是否为string1的子串。
Input
输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于1000000),string1和string2中保证不出现空格。
Output
对于每组输入数据,若string2是string1的子串,则输出string2在string1中的位置,若不是,输出-1。
Example Input
abca12345645abcddd
Example Output
14-1
code:
#include <stdio.h>
#include <string.h>
int next[1000010];
char s1[1000010], s2[1000010];
void getnext()
{
int len = strlen(s2);
int i = 0, j = -1;
next[0] = -1;
while(i<len)
{
if(j==-1||s2[i] == s2[j])
{
i++;
j++;
next[i] = j;
}
else
{
j = next[j];
}
}
}
int kmp()
{
int i = 0, j = 0;
int 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(j>=len2)
{
return i-j+1;
}
else return -1;
}
int main()
{
while(~scanf("%s", s1))
{
scanf("%s", s2);
getnext();
printf("%d\n", kmp());
}
}
#include <string.h>
int next[1000010];
char s1[1000010], s2[1000010];
void getnext()
{
int len = strlen(s2);
int i = 0, j = -1;
next[0] = -1;
while(i<len)
{
if(j==-1||s2[i] == s2[j])
{
i++;
j++;
next[i] = j;
}
else
{
j = next[j];
}
}
}
int kmp()
{
int i = 0, j = 0;
int 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(j>=len2)
{
return i-j+1;
}
else return -1;
}
int main()
{
while(~scanf("%s", s1))
{
scanf("%s", s2);
getnext();
printf("%d\n", kmp());
}
}
阅读全文
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简单应用
- [Android6.0][RK3399] Mipi LCD 通用移植调试流程
- synchronized和volatile的使用方法以及区别
- C++信息学奥赛一本通1027
- 超详细Android接入支付宝支付实现,有图有真相
- Spring框架——JDBC与事务管理
- 数据结构实验之串一:KMP简单应用
- 面向对象 C++学习之我之过错
- C++信息学奥赛一本通1028
- Python Learning_1
- 网络开源框架之libuv使用实例
- XCTF嘉年华 crypto1 Writeup
- Spring+Mybatis+ehcache整合
- Test 2017.10.15(周末做,周一(2017.10.16)测)
- Response常见方法使用和问题