![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后缀数组
dezhonger
这个作者很懒,什么都没留下…
展开
-
后缀数组
约定:源字符串S,下标从0开始后缀j: S[j,j+1,j+2....],就是从第j个字符开始的后缀i s[i] 第i为开始的后缀 0 a abracadabra 1 b bracadabra 2 r racadabra 3 a acadabra 4 c cadabra 5 a ad...原创 2019-05-18 15:25:42 · 287 阅读 · 0 评论 -
leetcode1044
求最长公共子串(可重叠)分析:求出后缀数组的height数组,最大值即为最长公共子串的长度。假设height[i]最大,sa[i]表示的是在原字符串的起始位置可以作为模板题目.//挑战程序设计 p378 4.7.3 后缀数组#include <iostream>#include <cstring>#include <algorithm&...原创 2019-05-18 15:34:44 · 678 阅读 · 0 评论 -
基于后缀数组的字符串匹配
《挑战程序设计竞赛》 p380问题:要求字符串T在字符串S中出现的位置。分析:kmp当然可以。这里介绍一种利用后缀数组的做法,假设已经计算出了字符串S的后缀数组,可以通过二分搜索来找。复杂度为O(|T||og|S|)bool contain(string S, int* sa, string T) { int a = 0; int b = S.le...原创 2019-05-18 16:48:12 · 549 阅读 · 2 评论 -
poj2217 Secretary 求最长公共子串
poj 2217:http://poj.org/problem?id=2217求最长公共子串(子串是必须连续的,子序列可以不连续)举例:S=ABRACADABRAT=ECADADABRBCRDAR最长公共子串为ADABR,长度为5.做法:构造一个新字符串S'\0'T,也就是在S和T之间插入一个不会在S和T中出现的一个字符,然后检查后缀数组中的相邻后缀,如果两个起始位置分别...原创 2019-05-18 17:06:15 · 192 阅读 · 0 评论