【发布时间】:2015-10-13 14:36:15
【问题描述】:
我想使用 KMP 算法解决UVA 10298 -"Power Strings" 问题。在this 博客中,展示了如何使用失效函数计算最小长度重复子串的技术。技术如下:
- 计算给定字符串的前缀-后缀表
pi[ ]。 - 设
len为字符串长度,last_in_pi为存储在pi表的最后一个索引处的值。 - 检查
len % (len - last_in_pi) == 0是否为真。如果为真则最小长度重复子串的长度为(len - last_in_pi),否则为给定字符串的长度。
我了解什么是故障函数以及它如何用于在文本中查找模式,但我很难理解这种技术的正确性证明。
【问题讨论】:
-
我投票结束这个问题,因为它不是一个编程问题。
-
如果这个问题不适合堆栈溢出,你能建议我在哪里问这个问题以获得好的答案吗?
-
这适用于 SO,因为它询问算法是如何工作的。这是算法标签的中心点。
标签: algorithm pattern-matching knuth-morris-pratt