2010年7月18日
摘要: 什么是不重叠最长子串呢,就是一个串中至少出现两次,又不重叠的子串中的最长的,比较绕口。  解决这个问题的关键还是利用height 数组。把排序后的后缀分成若干组,其中每组的后缀之间的height 值都不小于k。然后找出各个组的后缀的sa值的最大最小值max,min,如果存在 max-min >= k,那么就存在长度为k的不重叠子串,因为根据LCP定理,每个组中的height值都不小于k,就是... 阅读全文
posted @ 2010-07-18 15:54 looker 阅读(2208) 评论(0) 推荐(0) 编辑
摘要: 求若干个字符串的最长公共子串,是后缀数组一个简单的运用,为说明简单起见,设要求的字符串个数是两个。  首先我们先来看一个定义,最长公共前驱,就是常见的LCP,定义lcp(u,v)=max{i|u=v} 也就是从头开始比较u和v的对应字符持续相等的最远值,定义LCP(i,j)=lcp(Suffix(SA[i]),Suffix(SA[j])),也就是SA数组中第i个和第j个后缀的最长公共前缀,关于LC... 阅读全文
posted @ 2010-07-18 15:37 looker 阅读(5089) 评论(0) 推荐(1) 编辑