数据结构实验之串二:字符串匹配
2016-10-29 20:53
399 查看
数据结构实验之串二:字符串匹配
Time Limit: 1000MSMemory Limit: 65536KB
[align=center][/align]
Problem Description
给定两个字符串string1和string2,判断string2是否为string1的子串。Input
输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2,string1和string2中保证不出现空格。(string1和string2大小不超过100字符)Output
对于每组输入数据,若string2是string1的子串,则输出"YES",否则输出"NO"。Example Input
abc a 123456 45 abc ddd
Example Output
YES YES NO
#include<stdio.h> #include<string.h> int next[1000001]; void get_next(char *p) { int i=0,j=-1; next[0]=-1; int len=strlen(p); while(i<len-1) { if(j==-1||p[i]==p[j]) { i++; j++; next[i]=j; } else j=next[j]; } } int kmp(char *s,char *p) { int len1=strlen(s); int len2=strlen(p); memset(next,0,sizeof(next)); get_next(p); int i=0,j=0; while(i<len1&&j<len2) { if(j==-1||s[i]==p[j]) { i++; j++; } else { j=next[j]; } } if(j>=len2) return i-len2+1; else return -1; } int main() { char s[1000001],p[1000001];a while(~scanf("%s%s",s,p)) { if(kmp(s,p)!=-1) printf("YES\n"); else printf("NO\n"); } return 0; }
相关文章推荐
- 数据结构实验之串二:字符串匹配(查看一个字符串是否为另一个字符串的子串)
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- SDUTOJ(2125)数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- SDUT 2125 数据结构实验之串二:字符串匹配
- SDUTOJ 2125 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- SDUT OJ 数据结构实验之串二:字符串匹配(KMP做法)
- 数据结构实验之串二:字符串匹配
- (模板题)sdut 2125 数据结构实验之串二:字符串匹配(KMP)
- SDUT 2125 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- [SDUT](2125)数据结构实验之串二:字符串匹配 ---字符串匹配(串)
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配