SDUTACM 数据结构实验之串二:字符串匹配
来源:互联网 发布:matlab2016a破解版mac 编辑:程序博客网 时间:2024/05/21 01:56
Problem Description
给定两个字符串string1和string2,判断string2是否为string1的子串。
Input
输入包含多组数据,每组测试数据包含两行,第一行代表string1,第二行代表string2,string1和string2中保证不出现空格。(string1和string2大小不超过100字符)
Output
对于每组输入数据,若string2是string1的子串,则输出"YES",否则输出"NO"。
Example Input
abca12345645abcddd
Example Output
YESYESNO
Hint
#include<stdio.h>#include<stdlib.h>#include<string.h>struct hh{ char str[100]; int len;};void Getnext(struct hh *t,int next[]){ int j=0,k=-1; next[0]=-1; while(j<t->len) { if(k==-1||t->str[j]==t->str[k]) { k++; j++; if(t->str[j]!=t->str[k]) next[j]=k; else next[j]=next[k]; } else k=next[k]; }}int KMP(struct hh *s,struct hh *t){ int next[1000],i=0,j=0; Getnext(t,next); while(i<s->len&&j<t->len) { if(j==-1||s->str[i]==t->str[j]) { i++; j++; } else j=next[j]; } if(j>=t->len) return i-t->len; else return (-1);}int main(){ struct hh *str1,*str2; str1=(struct hh *)malloc(sizeof(struct hh)); str2=(struct hh *)malloc(sizeof(struct hh)); int x; while(scanf("%s",&str1->str)!=EOF) { scanf("%s",&str2->str); str1->len=strlen(str1->str); str2->len=strlen(str2->str); x=KMP(str1,str2); if(x==-1) printf("NO\n"); else printf("YES\n"); } return 0;}
0 0
- SDUTACM 数据结构实验之串二:字符串匹配
- sdutacm-数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- 数据结构实验之串二:字符串匹配
- HTML-开始链接
- MyBatis 配置sql语句输出
- using ssh login linux installed in vmware
- 【codeforces 725C】C. Hidden Word【字符串构造】
- 一次完整的HTTP请求
- SDUTACM 数据结构实验之串二:字符串匹配
- 洛谷 P1800 software_NOI导刊2010提高(06)(二分答案+DP检验)
- cocoa pods的简单使用
- 轮播图的简单实现
- Android ListView 实现分批加载
- 云计算读书笔记0:云计算简介
- hdu 2136 Largest prime factor(素数打表)
- C# Dictionary用法总结
- C++ 虚函数表解析