摘要: 题意:给定两个字符串 A 和 B,求最长公共子串。分析:字符串的任何一个子串都是这个字符串的某个后缀的前缀。求 A 和 B 的最长公共子串等价于求 A 的后缀和 B 的后缀的最长公共前缀的最大值。如果枚举 A和 B 的所有的后缀,那么这样做显然效率低下。由于要计算 A 的后缀和 B 的后缀的最长公共前缀,所以先将第二个字符串写在第一个字符串后面,中间用一个没有出现过的字符隔开,再求这个新的字符串的后缀数组。观察一下,看看能不能从这个新的字符串的后缀数组中找到一些规律。以 A=“aaaba”,B=“abaa”为那么是不是所有的 height 值中的最大值就是答案呢?不一定!有可能这两个 后 缀 阅读全文
posted @ 2013-09-07 15:13 z.arbitrary 阅读(341) 评论(0) 推荐(0) 编辑