题目链接:https://cn.vjudge.net/contest/283743#problem/A 题目大意:给你字符串s1和s2,然后问你s2的每一个后缀在s1中出现的次数之和(可重叠)。 具体思路:首先将s1和s2翻转过来,这样的话就把后缀问题转换成了求前缀的问题。举个例子,s1="abcd ...
分类:
其他好文 时间:
2019-02-16 15:08:14
阅读次数:
153
KMP算法: 引言: KMP算法是一种改进的字符串匹配算法 字符串匹配:即寻找str_target在str_source中出现的位置 没有改进的字符串匹配:用暴力法进行搜索,枚举出所有的情况然后一一比较。缺点:耗费了很多时间,时间复杂度非常高。所以需要改进。 这里举一个暴力匹配的例子: 在"zabc ...
分类:
编程语言 时间:
2019-02-16 00:09:45
阅读次数:
267
2019-02-07 lyd字符串hash 学了Manacher算法 2019-02-08 今天去了趟姥姥家 晚上学了一下kmp算法 2019-02-09 继续学kmp+exkmp 2019-02-10 今天去喝喜酒,今天真的好烦,我不会喝酒,他们都在喝,所以对我有种讨厌的感觉,在酒桌上的感觉就要死 ...
分类:
其他好文 时间:
2019-02-15 01:24:59
阅读次数:
183
理解: 模式匹配就是将主串中下标为i的元素与模式串中下标为j的元素进行比较(比较过程中i不会回溯 而j的值会按照next对应的值进行回溯) ...
分类:
编程语言 时间:
2019-02-12 01:40:20
阅读次数:
162
1、KMP算法详解与应用 子序列:可以连续可以不连续。 子数组/串:要连续 暴力方法:逐个位置比对。 KMP:让前面的,指导后面。 概念建设: d的最长前缀与最长后缀的匹配长度为3。(前缀不能到最后一个,后缀也不能到第一个) 先计算出str2的全部匹配信息。 一路相等,直到X与Y不匹配,根据X位置的 ...
分类:
编程语言 时间:
2019-02-11 12:41:39
阅读次数:
328
【链接】 "我是链接,点我呀:)" 【题意】 给你一个字符串s 让你从中选出来一个字符串t 这个字符串t是s的前缀和后缀 且在除了前缀和后缀之外的中间部位出现过。 且要求t的长度最长。 让你输出这个字符串t 【题解】 KMP的应用 f[i]就是以i为结尾的后缀能匹配的最长前缀的长度 因此只要知道f[ ...
分类:
其他好文 时间:
2019-02-10 17:45:42
阅读次数:
124
代码风格 说自己不清楚的算法,比如KMP,如果解释不清楚或者写不出来的算法建议不提 注意代码的缩进以及空格的合理运用,使得代码看起来比较整洁有条理 注意边界的条件以及越界 误区: 算法想出来还仅仅不够 算法写出来也还不够 试着从面试官的角度来思考: coding风格(缩进,括号,变量名) codin ...
分类:
其他好文 时间:
2019-02-10 12:31:25
阅读次数:
192
这题是AC自动机的模板题,AC自动机是结合了字典树,和KMP两种算法产生的,去年为了学习AC自动机去看了前面说的两种算法,但是可能因为KMP当时理解的不够透彻所以这题当时也只是半背代码的做出来了,没多久就忘了。经过那么久的学习感觉KMP掌握的差不多了,今天回顾了一下AC自动机,并记录一下模板 AC自 ...
分类:
其他好文 时间:
2019-02-10 00:02:31
阅读次数:
202
概述 KMP算法能够解决字符串匹配问题。即S串在P串中出现了多少次的问题,时间复杂度为$O(n+m)$ 设S处的指针为j,P处的指针为i,我们的目的是让P[i j+1..i]与S[1..j]完全相等。 那么如果使用传统的方法,一旦匹配失败,就需要把i往后移一位,再重新匹配,时间复杂度是$O(n m) ...
分类:
编程语言 时间:
2019-02-10 00:01:02
阅读次数:
217
串这种数据结构,使用是比较多的,但是它的一些方法在更高级的语言中,比如Java,Python中封装的比较完整了。在这里,我只写了串中使用最多的匹配算法,即串的定位操作。串的匹配算法常用的两种就是朴素匹配算法和KMP匹配算法。代码亲测,可直接执行。 ...
分类:
编程语言 时间:
2019-02-09 19:24:42
阅读次数:
206