STL和KMP算法心得

STL的重要且常用的几个:
头文件queue在一些存储数据且需要实时排序上,经常被使用优先队列priority_queue,在这里priority_queue<G,vector<G>,cmp> q;G表示数据类型,而且优先队列还可以在数据结构里面重构小于号用于排列。
头文件stack可以利用先进后出的处理一些数据。
头文件set可以用于对一组数据排序和去重做处理,同一头文件的multiset可以做不去重的排序,同时set与multiset在检索速度上是最快的。
头文件map可以用于对一组很多数据做映射处理,同一头文件的multimap可以做多重映射。
头文件vector可以代替数组的功能且自带find和size函数其自带的许多函数非常方便在整个代码上操作。
头文件string可以代替字符串的定义,里面包含了许多对字符串的操作,非常方便在整个代码上的操作。

KMP算法心得:
首先需要一组next[maxn]数据记录目的字串的每一个位置上的健值,此健值的代表目的子串的所有子串的相等的最大前缀和最大后缀的长度。记录完后KMP算法函数其实就完成了一半了,这时候开始写KMP函数,目的主串和目的字串同时遍历,遇到相同的元素两个串就同时后移,否者就让目的子串的目标位置转到next[目标位置],然后继续遍历,直到最两串其一的长度大于自身长度跳出循环,判断目标位置与目的子串的大小是否相等,是则找到,否则没找到,这就是KMP算法,它的复杂度只有n+m。

猜你喜欢

转载自blog.csdn.net/wanglin007/article/details/81807598