
后缀数组
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 · 329 阅读 · 0 评论 -
leetcode1044
求最长公共子串(可重叠) 分析:求出后缀数组的height数组,最大值即为最长公共子串的长度。假设height[i]最大,sa[i]表示的是在原字符串的起始位置 可以作为模板题目. //挑战程序设计 p378 4.7.3 后缀数组 #include <iostream> #include <cstring> #include <algorithm&...原创 2019-05-18 15:34:44 · 718 阅读 · 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 · 610 阅读 · 2 评论 -
poj2217 Secretary 求最长公共子串
poj 2217:http://poj.org/problem?id=2217 求最长公共子串(子串是必须连续的,子序列可以不连续) 举例: S=ABRACADABRA T=ECADADABRBCRDAR 最长公共子串为ADABR,长度为5. 做法:构造一个新字符串S'\0'T,也就是在S和T之间插入一个不会在S和T中出现的一个字符,然后检查后缀数组中的相邻后缀,如果两个起始位置分别...原创 2019-05-18 17:06:15 · 223 阅读 · 0 评论