使用KMP算法在文本串S中找模式串P是一种常见的方法。假设S=P={xyxyyxxyx},亦即将S对自己进行匹配,匹配过程中正确的next数组是____。

1、首先求最大相同前缀后缀长度

模式串的各个子串

前缀

后缀

最大公共元素长度

x

0

xy

x

y

0

xyx

x , xy

x , yx

1 ( x )

xyxy

x , xy , xyx

y , xy , yxy

2 ( xy )

xyxyy

x , xy , xyx , xyxy

y , yy , xyy , yxyy

0

xyxyyx

x , xy , xyx , xyxy , xyxyy

x , yx , yyx , xyyx , yxyyx

1 ( x )

xyxyyxx

x , xy , xyx , xyxy , xyxyy ,xyxyyx

x , xx , yxx , yyxx , xyyxx ,yxyyxx

1 ( x )

xyxyyxxy

x , xy , xyx , xyxy , xyxyy ,xyxyyx , xyxyyyxx

y , xy , xxy , yxxy , yyxxy ,xyyxxy , yxyyxxy

2 ( xy )

xyxyyxxyx

x , xy , xyx , xyxy , xyxyy ,xyxyyx , xyxyyyxx , xyxyyyxxy

x , yx , xyx , xxyx , yxxyx ,yyxxyx , xyyxxyx , yxyyxxyx

3 ( xyx )

2、通过“最长相同前缀后缀长度值右移一位,然后初值赋为 -1 ”得到的 next 数组:

模式串

X

Y

X

Y

Y

X

X

Y

X

前缀最大公共元素

0

0

1

2

0

1

1

2

3

Next

-1

0

0

1

2

0

1

1

2

KMP模式匹配练习题的更多相关文章

  1. KMP模式匹配_2

    http://blog.csdn.net/lin_bei/article/details/1252686 三. 怎么求串的模式值next[n] 定义: (1)next[0]= -1 意义:任何串的第一 ...

  2. YTU 2297: KMP模式匹配 三(串)

    2297: KMP模式匹配 三(串) 时间限制: 1 Sec  内存限制: 128 MB 提交: 25  解决: 16 [提交][状态][讨论版] [Edit] [TestData] 题目描述 输入一 ...

  3. YTU 2296: KMP模式匹配 二(串)

    2296: KMP模式匹配 二(串) 时间限制: 1 Sec  内存限制: 128 MB 提交: 29  解决: 17 题目描述 输入一个主串和一个子串,用KMP进行匹配,问进行几趟匹配才成功,若没成 ...

  4. YTU 2295: KMP模式匹配 一(串)

    2295: KMP模式匹配 一(串) 时间限制: 1 Sec  内存限制: 128 MB 提交: 32  解决: 22 题目描述 求子串的next值,用next数组存放,全部输出 输入 输入一个字符串 ...

  5. KMP模式匹配 三(弦)

    原文请訪问我的博客:xiaoshig.sinaapp.com KMP模式匹配 三(串) Time Limit:1000MS     Memory Limit:131072KB     64bit IO ...

  6. KMP算法 KMP模式匹配 一(串)

    A - KMP模式匹配 一(串) Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:131072KB  ...

  7. 2295: KMP模式匹配 一(串)

    2295: KMP模式匹配 一(串) 时间限制: 1 Sec  内存限制: 128 MB提交: 210  解决: 97[提交][状态][讨论版][命题人:外部导入] 题目描述 求子串的next值,用n ...

  8. 字符串的朴素模式和KMP模式匹配

    先复习一下字符串指针: #include <iostream> #include <string.h> using namespace std; int main() { ch ...

  9. KMP模式匹配

    http://www.cnblogs.com/wangguchangqing/archive/2012/09/09/2677701.html nextal[j+1]=next[j]+1 KMP算法的实 ...

随机推荐

  1. linux中防CC攻击两种实现方法(转)

    CC攻击就是说攻击者利用服务器或代理服务器指向被攻击的主机,然后模仿DDOS,和伪装方法网站,这种CC主要是用来攻击页面的,导致系统性能用完而主机挂掉了,下面我们来看linux中防CC攻击方法. 什么 ...

  2. BC68(HD5606) 并查集+求集合元素

    tree  Accepts: 143  Submissions: 807  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65 ...

  3. 文件流StreamReader和StreamWriter的使用

    using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...

  4. mysql PDO的使用

    原文链接:http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/08/12/1797753.html

  5. JavaScript实现全排列

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> ...

  6. aop注解

    注解 xml的直接配置 <aop:config proxy-target-class="false"> //切入点 <aop:pointcut expressio ...

  7. springmvc中@PathVariable和@RequestParam的区别(百度收集)

    http://localhost:8080/Springmvc/user/page.do?pageSize=3&pageNow=2 你可以把这地址分开理解,其中问号前半部分:http://lo ...

  8. WPF 数据绑定基础

    纯理论,可能会枯燥. .net 技术群: 199281001 ,欢迎加入. 1.目标对象一定是派生自DependencyObject的对象,并且目标属性必须是依赖属性,否则数据绑定操作将会失   败. ...

  9. 闲来无事,用Java的软引用写了一个山寨的缓存

    闲来无事,用Java的软引用写了一个山寨的缓存 博客分类: java基础 众所周知java中的引用分为 StrongReference.SoftReference.WeakReference.Phan ...

  10. ios开发 网络编程浅析(一)

    iphone包含了很多框架和库,从底层的套接字到不同层次的封装,可以方便地给程序添加网络功能. (1)BSD套接字.最底层的套接字,这是Unix网络开发常用的API.如果从其他系统移植程序,而程序用的 ...