字符串
北弑鸣狮
这个作者很懒,什么都没留下…
展开
-
trie树及其优化
trie树,即字典树,是一种基于多字符串匹配的数据结构,该结构由根开始向下走到底,其中由跟到叶节点的一条路径组成了一个字符串。 其匹配的是到目标字符ch2位置,从ch2之前的某个字符ch1开始ch1....ch2为一种目标字符串。 //主要代码包含4部分,trie node部分 初始化和删除部分 插入 寻找 struct Node { char* val; Node *next[...原创 2019-09-02 15:29:24 · 461 阅读 · 0 评论 -
kmp及扩展kmp
kmp kmp匹配主要匹配的是两个字符串,我们将需要匹配的记录为s1,用于匹配的串为s2. kmp匹配的是从以当前s1中的ch字符为末尾的字符串能够在s2中匹配的最大前缀的长度。 也即是s1中的每个前缀的最长后缀所匹配的s2的最长前缀。 先考虑自身与自身匹配的情况: 如果用dp+数学归纳来思考: 假设当前需要匹配j位置的字符,从0—j-1位置都已经记录了该位置能够匹配到的自身字符...原创 2019-08-27 21:00:03 · 164 阅读 · 0 评论 -
AC自动机及后缀自动机
ac自动机是一种基于trie树的算法,其本质和kmp上的处理很相似。 trie树结构:https://blog.csdn.net/qq_38890926/article/details/81158021 kmp转移思路:https://blog.csdn.net/qq_38890926/article/details/81158132 ac自动机组要由三个部分组成:trie树的建立 ...原创 2019-08-12 09:38:52 · 396 阅读 · 0 评论 -
回文串/回文序列
回文串即,一个串反过来读也是他本身的串就叫做回文串。 回文串的判定: bool isPalindrome(char *s) { int len=strlen(s); int l=0; int r=len-1; while(l<r) //相等不用判定 { if(s[l]==s[r]) l++,r--; ...原创 2019-09-02 15:28:40 · 256 阅读 · 0 评论 -
子序列问题
1.上升子序列对数。 HDU - 4991 给定一个长度n的序列a,求出其中长度为m的有序子序列对数,mod上123456789。(1<= n<=10000 ,1<=m<=100) 因为在处理第i个数的时候,得到了之前i之前长度为1-m的长度,因此很容易想到用动态规划来处理该问题。 思想来源:子序列有长度要求,并且是递增的,因此每往序列后添加一个字就会使得结果增加...原创 2019-09-02 15:27:58 · 186 阅读 · 0 评论