摘要: 一看名字就知道这是棵树,而且和字符串有关。 就我理解,Trie树是以字符为边,以字符串信息为点的树。可以用于字符串的去重、检索等。 实现的话,将根节点认为是一个特殊的点,从此开始向下保存字符串。设ch[i][j]存储结点i的字符编号为j的孩子的编号,cnt[i]表示以结点i作为结束的字符串数(也可以 阅读全文
posted @ 2018-09-16 19:42 Mr^Kevin 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 好吧,这其实是一道水题,只不过带着一个性质而已。 也就是是KMP求最小循环节。 先给出式子:len=n-(fail[n-1]+1)(针对从0开始,fail保存某个字符前缀最长公共前后缀的情况) 我的理解是,n=fail[n-1]+len',fail保存的是公共前后缀,因此len'中不会包含残缺的部分 阅读全文
posted @ 2018-09-16 15:15 Mr^Kevin 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 假如我们需要在一段很长的文本中查找一个单词出现的位置,你会怎么做?朴素的做法是从文本的字母开始,向后和这个单词中的字母一一匹配,若完全匹配则说明找到了一个单词,若有一个字母匹配失败,就紧接着换文本的下一个字母重新匹配,即使成功匹配到一个单词,也要紧接着从下一个字母开始匹配。显然,最坏情况复杂度可以达 阅读全文
posted @ 2018-09-16 14:20 Mr^Kevin 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 本题在洛谷上的链接:https://www.luogu.org/problemnew/show/P4503 就我现在的水平而言,看起来真不简单。谁知道他近乎裸题。 本题关键在于判断两个字符串是否只有一个字符不同,最朴素的做法是,枚举每对字符串,再枚举他们的每一位,复杂度是O(n^2*l)的,显然无法 阅读全文
posted @ 2018-09-16 08:46 Mr^Kevin 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 字符串哈希主要用于判断两个字符串是否相等,可以做到O(n)预处理,O(1)查询。 其实就是把字符串看成一个数字,其进制为base(应大于字符种类),另外还要对某个数取模,可以自己选择一个大质数,也可以让其对unsigned int或unsigned long long自然溢出。 因为是取过模,所以可 阅读全文
posted @ 2018-09-16 08:23 Mr^Kevin 阅读(228) 评论(0) 推荐(0) 编辑