随笔分类 -  字符串

摘要:目的:类似回文Trie树+ac自动机,可以用来统计一些其他的回文串相关的量 复杂度:O(nlogn) https://blog.csdn.net/Lolierl/article/details/99971257 https://www.luogu.org/problem/P5496 求出以每个位置结 阅读全文
posted @ 2019-10-10 21:17 myrtle 阅读(136) 评论(0) 推荐(0) 编辑
摘要:目的:把字符串有效地转化为一个整数,极小的概率会出现两个字符串hash值相等。 学习链接:https://www.luogu.org/blog/pks-LOVING/zi-fu-chuan-xue-xi-bi-ji-ha-xi-hash-yu-zi-dian-shu-trie# hash[i]=(h 阅读全文
posted @ 2019-09-18 23:28 myrtle 阅读(190) 评论(0) 推荐(0) 编辑
摘要:目的:已知一个串S,求S的循环的同构字符串S'中字典序最大/最小的一个,输出其位置,place∈[0,n-1] 设S=bcad,S'=bcad,cadb,adbc,dbca,最小表示的S'是adbc,位置是2,最大表示的S'是dbca,位置是3 时间复杂度:O(n) 自用模板: int get_mi 阅读全文
posted @ 2019-09-13 16:21 myrtle 阅读(349) 评论(0) 推荐(0) 编辑
摘要:目的:线性查找一个串的最长回文子串 时间复杂度:O(n) len[i]表示以i为中心的回文串的半径,mx即为当前计算回文串最右边字符的最大值,p是中心点mid,mx-i和2*p-1关于p对称 https://blog.csdn.net/csdn_kou/article/details/8291793 阅读全文
posted @ 2019-09-09 16:53 myrtle 阅读(163) 评论(0) 推荐(0) 编辑
摘要:目的:已知n个长度不一定相同的母串,以及一个长度为m的模式串T,求该模式串是否是一个母串的前缀。 时间复杂度:O(m) 特点:牺牲空间换取时间,常用于字符串的快速检索,快速排序与去重,文本的词频统计等。 模板 const int MAX_N = 10000; // Trie 树上的最大结点数 con 阅读全文
posted @ 2019-09-06 08:09 myrtle 阅读(153) 评论(0) 推荐(1) 编辑
摘要:目的:已知n个长度不同的模式串,以及一个长度为m的串S,求在S中出现过多少个模式串。 步骤: ①建立trie树 ②建立失败指针 ③字符串匹配 fail[now]:当前节点now的失败指针指向的地方 trie[now][i]:下一个字母为i+'a'的节点的下标为trie[now][i] build过程 阅读全文
posted @ 2019-08-28 23:59 myrtle 阅读(177) 评论(0) 推荐(1) 编辑
摘要:目的:找出字符串S的所有后缀与字符串T的最长公共前缀,预处理Next[i]。 S字符串长度为n,T字符串长度为m。 Next[i],i∈[0,m),表示T的后缀i与T的最长公共前缀。 extend[i],i∈[0,n),表示T与S[i,n)的最长公共前缀。如果有一个extend[i]=m,则T在S中 阅读全文
posted @ 2019-08-09 23:17 myrtle 阅读(227) 评论(0) 推荐(1) 编辑
摘要:目的:在字符串T中查找字符串P的出现位置,预处理P字符串得到fail数组 时间复杂度:O(|P|+|T|) next[i]定义为字符s[i]前面最多有多少个连续的字符和字符串s从初始位置开始的字符匹配,i∈[1,n] 循环节问题: 字符串长度为n,若n%(n-Next[n])==0,必有循环节,且循 阅读全文
posted @ 2019-08-09 20:39 myrtle 阅读(356) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示