后缀数组入门
2020-12-13 05:38
标签:ons names detail i++ problem ble c++ open string 后缀数组 (Suffix Array) 指某个字符串的所有后缀按字典排序后得到的数组。数组中只保存后缀开始的位置。 后缀:从某个字符串的某个开始位置到其末尾的字符串子串,包括原串和空字符串。 字典排序: 默认从小到大 朴素做法:将n个字符串进行sort排序,时间复杂度\(O(n^2log_2n)\) 倍增数组法: Manber和Myers发明,需要进行 \(log_2n\) 次排序,排序时间复杂度 \(O(nlog_2n)\) ,所以总时间复杂度是 \(O(nlog_2^2n)\) ,可以用基数排序将sort排序进行优化,总时间复杂度优化成 \(O(nlog_2n)\)。 所以一般来说,倍增数组的方法够用了,更快的可以去找[SA-IS 算法] Best Cow Line(数据加强版) 未完待续 https://www.cnblogs.com/jinkun113/p/4743694.html 后缀数组入门 标签:ons names detail i++ problem ble c++ open string 原文地址:https://www.cnblogs.com/--zz/p/11144860.html博主睡觉了,明天继续
后缀数组的定义:
例子:{ABC}的后缀{ABC},{BC},{C},{}
构造后缀数组:
倍增数组的代码:
未优化代码
#include
题目:
参考博客和文献:
https://www.cnblogs.com/victorique/p/8480093.html
挑战程序设计竞赛(第2版)
上一篇:转:Web测试需要了解的知识
下一篇:窗体上打个矩形的洞