字符串
文章平均质量分 96
铁皮暖壶
这个作者很懒,什么都没留下…
展开
-
字典树 Trie
Trie是一种存储字符串集合的树形数据结构,我们可以将一个字符串集合保存到Trie里, 并快速地进行字符串查找。在Trie树里, 除了根节点,每个节点可以存储一个字符,从根节点到树上某一节点的路径代表一个字符串。在向字典树中添加字符串时,如果一个字符串在某个节点结束,我们可以给这个节点打上一个标记(结尾或出现次数)。这样在后续访问时就可以知道到此节点为止是一个完成的字符串。当然, 也可以在路径上的任何地方打标记, 进行信息统计。沿路径记录信息是否为单词结尾是否为前缀是否是某个数的位注意。原创 2023-11-04 21:10:16 · 83 阅读 · 0 评论 -
字符串-最小表示法
因为不知道要比较A集合中的哪一个和B集合中的哪一个字符串, 如果暴力的匹配集合A与集合B中的字符串, 则时间复杂度为。b 是 a 的最小循环覆盖,当且仅当 a 是通过 b 复制多次并连接后得到的字符串的。,且 b 是满足条件的字符串中长度最小的。因为一个字符串的最小表示是唯一的, 所以只需比较最小表示是否相等就可以了。给你一个字符串 a,你需要求出这个字符串的字典序最小的最小循环覆盖。如果与a循环同构的字符串集合为A, 与b循环同构的字符串集合为B。)的位置所对应的循环同构最是字符串的最小表示。原创 2023-11-04 21:04:30 · 75 阅读 · 0 评论 -
KMP算法
KMP每次通过基于上个位置求出的nxt值, 来节省计算当前位置的nxt值的时间KMP求出的是串S最长的公共前后缀, 但S仍然有其它公共前后缀, 可以对前缀不断迭代nxt求出它们的长度, 所以我们可以求出一个公共前缀集合, 包括最长的公共前后缀, 和最短的公共前后缀。原创 2023-09-02 17:08:25 · 57 阅读 · 0 评论 -
扩展KMP算法
如果要用哈希统计从 s 中每一位字符开始最多可以匹配多少位 p 中的字符,需要用到二分查找,此时时间复杂度为Onlogmm,其中 n 表示 s 的长度,m 表示 p 的长度。扩展KMP(也称为Z algorithm)能够以的时间复杂度求出一个字符串 s 和它的任意的的长度。注意其与KMP算法求出的 next 数组的区别,一个是以字符s[i]结束,另一个是从字符s[i]开始。原创 2023-08-17 12:02:50 · 297 阅读 · 1 评论 -
Manacher算法
如果一个字符串从左往右看和从右往左看是一样的,我们把它叫做回文串回文串可以按长度的奇偶性分为的回文串和的回文串。最长回文子串(Longest palindromic substring)问题指的是对于任意一个给定的字符串,我们要求出这个字符串中最长的回文子串。我们很容易就可以想到最暴力的做法:枚举所有子串,然后检查当前枚举到的子串是否为回文串,最后从符合条件的子串中找出最长的就可以啦!暴力的时间复杂度是On3的, 枚举起点,终点, 判断回文串都是O(n)原创 2023-08-15 19:10:00 · 53 阅读 · 0 评论