随笔分类 - 字符串
摘要:目的:类似回文Trie树+ac自动机,可以用来统计一些其他的回文串相关的量 复杂度:O(nlogn) https://blog.csdn.net/Lolierl/article/details/99971257 https://www.luogu.org/problem/P5496 求出以每个位置结
阅读全文
摘要:目的:把字符串有效地转化为一个整数,极小的概率会出现两个字符串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
阅读全文
摘要:目的:已知一个串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
阅读全文
摘要:目的:线性查找一个串的最长回文子串 时间复杂度:O(n) len[i]表示以i为中心的回文串的半径,mx即为当前计算回文串最右边字符的最大值,p是中心点mid,mx-i和2*p-1关于p对称 https://blog.csdn.net/csdn_kou/article/details/8291793
阅读全文
摘要:目的:已知n个长度不一定相同的母串,以及一个长度为m的模式串T,求该模式串是否是一个母串的前缀。 时间复杂度:O(m) 特点:牺牲空间换取时间,常用于字符串的快速检索,快速排序与去重,文本的词频统计等。 模板 const int MAX_N = 10000; // Trie 树上的最大结点数 con
阅读全文
摘要:目的:已知n个长度不同的模式串,以及一个长度为m的串S,求在S中出现过多少个模式串。 步骤: ①建立trie树 ②建立失败指针 ③字符串匹配 fail[now]:当前节点now的失败指针指向的地方 trie[now][i]:下一个字母为i+'a'的节点的下标为trie[now][i] build过程
阅读全文
摘要:目的:找出字符串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中
阅读全文
摘要:目的:在字符串T中查找字符串P的出现位置,预处理P字符串得到fail数组 时间复杂度:O(|P|+|T|) next[i]定义为字符s[i]前面最多有多少个连续的字符和字符串s从初始位置开始的字符匹配,i∈[1,n] 循环节问题: 字符串长度为n,若n%(n-Next[n])==0,必有循环节,且循
阅读全文