4194: 字符串匹配

Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 206  Solved: 78

Description

给你两个字符串A,B,请输出B字符串在A字符串中出现了几次。

Input

多组测试数据,每组输入两个字符串。字符串的长度 <= 1000000.

Output

输出B在A中出现的次数。

Sample Input

aaa aa

Sample Output

1

HINT

 

Source

WuYiqi

kmp , 用来求串的匹配度,复杂度O(n)

这道题是我的kmp入门题,所以带上心得:

这里是一个很经典的介绍。

我觉得Partial match table就是为匹配串的每个字母找周期。

t[0]    t[1]    t[2]    t[3]    t[4]

a        b       c         a       a

-1       -1      -1      0      -1

之所以t[3]的nxt[3] = 0 , 是因为它与t[0] 构成周期 (t[3] = t[0]嘛) ;

而nxt[4] = -1 , 是以为它和t[1] 不构成周期 (t[4] != t[1]) ;

而之所以这么搞,是为了在t[3]找失败时能直接从最近的一个循环上继续下去 , 而不是暴力的让文本串重新开始找

kmp的nxt[]数组进一步:http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2314078.html

看过上面的连接后,我们已经可以求出字符串的最小周期了。但进一步,如何求出该字符串所有周期呢

#include<bits/stdc++.h>
using namespace std ;
void get_nxt () {
.....
} int main () {
scanf ("%s" , s) ;
lens = strlen (s) ;
get_nxt () ;
for (int i = nxt[lens-] ; ~i ; i = nxt[i]) {
printf ("%d\n" , lens--i ) ;
}
   printf ("%d\n" , lens);//毫无疑问,lens本身也是周期
return ;
}

至于证明和链接中岐哥的证明一模一样。

zstu.4194: 字符串匹配(kmp入门题&& 心得)的更多相关文章

  1. 字符串匹配KMP算法详解

    1. 引言 以前看过很多次KMP算法,一直觉得很有用,但都没有搞明白,一方面是网上很少有比较详细的通俗易懂的讲解,另一方面也怪自己没有沉下心来研究.最近在leetcode上又遇见字符串匹配的题目,以此 ...

  2. 字符串匹配-KMP

    节选自 https://www.cnblogs.com/zhangtianq/p/5839909.html 字符串匹配 KMP O(m+n) O原来的暴力算法 当不匹配的时候 尽管之前文本串和模式串已 ...

  3. 字符串匹配KMP算法

    1. 字符串匹配的KMP算法 2. KMP算法详解 3. 从头到尾彻底理解KMP

  4. 字符串匹配--kmp算法原理整理

    kmp算法原理:求出P0···Pi的最大相同前后缀长度k: 字符串匹配是计算机的基本任务之一.举例,字符串"BBC ABCDAB ABCDABCDABDE",里面是否包含另一个字符 ...

  5. 字符串匹配KMP算法的C语言实现

    字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...

  6. 字符串匹配KMP算法的讲解C++

    转自http://blog.csdn.net/starstar1992/article/details/54913261 也可以参考http://blog.csdn.net/liu940204/art ...

  7. 字符串匹配KMP算法(转自阮一峰)

    转自 http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算 ...

  8. 【Foreign】字符串匹配 [KMP]

    字符串匹配 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 3 3 6 3 1 2 1 2 ...

  9. 【Luogu P3375】字符串匹配KMP算法模板

    Luogu P3375 模式串:即题目中的S2所代表的意义 文本串:即题目中的S1所代表的意义 对于字符串匹配,有一种很显然的朴素算法:在S1中枚举起点一位一位匹配,失配之后起点往后移动一位,从头开始 ...

随机推荐

  1. 采用指数退避算法实现ajax请求的重发,全部完成时触发回调函数

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  2. Java server数据之(4):Redis鸟瞰

    Redis简介 Redis是NoSQL数据库中的一种,属于key-value键值对这一个子类别. 它常被称作是一款数据结构服务器(data structure server). Redis中的数据结构 ...

  3. [C语言]一个很实用的服务端和客户端进行TCP通信的实例

    本文给出一个很实用的服务端和客户端进行TCP通信的小例子.具体实现上非常简单,只是平时编写类似程序,具体步骤经常忘记,还要总是查,暂且将其记下来,方便以后参考. (1)客户端程序,编写一个文件clie ...

  4. Android--TextView 文字显示和修改

    一. 新建一个Activity 和 Layout 首先在layout文件夹中新建一个activity_main.xml,在新建工程的时候一般默认会新建此xml文件,修改其代码如下: <Relat ...

  5. 重写TiledServiceLayer实现Arcgis访问Mapabc地图服务 (转载)

    package com.baixin.main;/** *  * @ClassName:   MapAbcToArcGISTLayer * @Description:    ArcGIS访问MapAb ...

  6. css兼容性的问题

    https://www.douban.com/note/314793848/ 随意的一个博客ie6的兼容 这个博客比较好 http://blog.csdn.net/chuyuqing/article/ ...

  7. easyUI icon中文命名图片无法在浏览器中访问处理方法

    本身的原因是Tomcat没有设置URIencoding,导致无法识别 在Tomcat 文件夹 conf 中 server.xml中加 URIEncoding="utf-8"  可以 ...

  8. SSH框架整合配置所需JAR包(SSH整合)

    转载于:http://www.cnblogs.com/kaige123/p/5719662.html Hibernate Jar: 1.hibernate3.jar,这个是hibernate3.0的核 ...

  9. QLabel添加图片链接

    <a href = "http://1450591036.qzone.qq.com"><img src=://splash.png height="30 ...

  10. Java基础-四要素之一《继承》

    继承的概念: 继承在本职上是特殊——一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 继承是所有OOP语言不可缺少的部分,在java中使 ...