最小表示法
定义
最小表示法是用于解决字符串最小表示问题的方法。
字符串的最小表示
循环同构
当字符串
则称
最小表示
字符串
simple 的暴力
我们每次比较
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
解释
该实现方法随机数据下表现良好,但是可以构造特殊数据卡掉。
例如:对于
我们发现,当字符串中出现多个连续重复子串时,此算法效率降低,我们考虑优化这个过程。
最小表示法
算法核心
考虑对于一对字符串
不妨先考虑
所以我们比较时可以跳过下标
这样,我们就完成了对于上文暴力的优化。
时间复杂度
过程
- 初始化指针
为 , 为 ;初始化匹配长度 为 - 比较第
位的大小,根据比较结果跳转相应指针。若跳转后两个指针相同,则随意选一个加一以保证比较的两个字符串不同 - 重复上述过程,直到比较结束
- 答案为
中较小的一个
实现
1 2 3 4 5 6 7 8 9 10 11 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
本页面最近更新:2023/10/4 21:50:08,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:iamtwz, countercurrent-time, Early0v0, Enter-tainer, fjzzq2002, Ir1d, Junyan721113, karin0, ksyx, Menci, partychicken, Shawlleyw, SukkaW, Suyun514, TrisolarisHD, Xeonacid
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用