KMP是一种简化的字符串匹配的方法,思路并没有那么简单。 对于简单的给定的字符串和子串,用c++string库中的substr方法就可以很简单的做到字符匹配! 比如pta上的7-3 病毒感染检测 就可以用如下代码实现: #include <iostream>#include <string.h>us ...
分类:
编程语言 时间:
2020-05-06 14:11:26
阅读次数:
64
这一章,我们主要学习了串的知识点,最主要的是BF算法和KMP算法,BF简单粗暴,但时间的开销比较高,在BF算法里,匹配过程简单,注意指针开始匹配的语句是i=i-j+2;然后就是要多多回归课本。 还有就是kmp算法,KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的 ...
分类:
其他好文 时间:
2020-05-06 01:32:58
阅读次数:
55
1.本章学习了字符串的更多应用和数组的扩展知识。 现在学习字符串,不同于以往简单的使用,输入,输出,这一章带我深入到底层了解它的结构,学习很多字符串函数的实现方法,而不是简单地调包。还学到两个很有趣的匹配方法BF和KMP。KMP算法非常巧妙,通过观察主串的特点竟然能把m*n的复杂度优化为m+n.(虽 ...
分类:
其他好文 时间:
2020-05-05 23:51:55
阅读次数:
96
一、内容小结 (一) 串 定义 空串、子串、主串等概念 顺序存储——堆 链式存储 (二) 串的模式匹配算法 BF算法 KMP算法 (三) 数组 顺序存储 特殊矩阵的压缩存储 (四) 广义表 定义 取表头和取表尾两个运算 头尾链表、拓展线性链表的存储结构 (五)对string类型进一步了解 二、心得体 ...
分类:
其他好文 时间:
2020-05-05 23:49:07
阅读次数:
100
在这一章我学习了串、数组和广义表:①对于串的学习,我认为BF算法是一个时间复杂度高但易于理解的算法,而KMP算法是一个十分抽象的算法,next的函数让我觉得很难理解emmm,所以这part需要再看看书或者看看视频;②数组是我们从开始讲C++课程就学了的东西,所以我觉得数组的学习还挺顺利的。对于多为数 ...
分类:
其他好文 时间:
2020-05-05 23:23:37
阅读次数:
63
1.第四章学习的内容是串,数组和广义表 串的模式匹配有两种算法,一种是BF算法,也是最传统的算法,耗时久,时间复杂度是O(m*n),另一种就是KMP算法,时间复杂度是O(m+n) 跟之前的数组比起来,这章学习的数组还可以用链式结构,根据用户自行选择,还学了特殊矩阵的压缩存储 广义表则是一种递归的线性 ...
分类:
其他好文 时间:
2020-05-05 23:17:12
阅读次数:
52
一、本章内容小结 本章主要学习了串、数组和广义表。 1.串 定义: 串是内容受限的线性表,限定表中元素为字符。 串的两种存储结构: 顺序存储结构、链式存储结构。 串的模式匹配: 有两种常见算法: (1)BF算法,暴力依次比较法,时间复杂度为O(m*n)。 (2)KMP算法,找出当前匹配串中头尾最长的 ...
分类:
其他好文 时间:
2020-05-05 18:17:44
阅读次数:
73
KMP算法对于像我这样的ACM菜鸡来说实在难以理解 虽然有大佬讲课,但是还是不理解 感谢下面这位大犇的博客,让我看懂了KMP(跪谢) https://www.cnblogs.com/SYCstudio/p/7194315.html 下面是我对于学校题目的一些总结 KMP模板(解释太麻烦了,看上面的大 ...
分类:
其他好文 时间:
2020-05-05 12:42:10
阅读次数:
59
1.第四章学习了串、数组和广义表,其中重点在串的模式匹配算法,其次是特殊矩阵的压缩存储。串的模式匹配算法中最难理解的就是KMP算法了,虽然我反复看了三遍SPOC上的教学视频,但仍未能完全吃透这个算法,在网上搜索后,意外发现一位博主给出的解释,一下次又恍然大悟了,但是要说能自己打出整个函数,那还是有点 ...
分类:
其他好文 时间:
2020-05-05 00:49:38
阅读次数:
64
一、本章学习小结:第四章主要学习了串、数组和广义表,与以前学习的区别在于,本章将它们视为线性表。 1)串是内容受限的线性表,考虑到存储效率和算法方便性,一般采用顺序存储结构;考虑到串变量相差较大,可采用动态分配的方法;为了便于操作,可增设尾指针。 串的主要应用场景是模式匹配,其中有BF算法和KMP算 ...
分类:
其他好文 时间:
2020-05-04 12:59:26
阅读次数:
68