后缀数组(SA)

发布时间 2023-05-02 16:23:30作者: alloverzyt

在看完洛谷大佬的

最详细讲解

以后,我还是不能说没有完全不懂,所以干脆自己写一篇后缀数组详解,造福后人(QAQ)
本篇讲解引用例子和图片来自某不知名视频资源的大佬,如有知道大佬姓名,会立刻回来标注的。


开始之前,先要了解这些数组是干嘛的,一定要记好。
image

一下以长度为8的字符串aabaaaab为例子,进行讲解
(好的,直接面向代码开始讲解)

点击查看代码
  //按第一个字母排序
  for(i=1;i<=n;i++)c[x[i]=s[i]]++;
  for(i=1;i<=m;i++)c[i]+=c[i-1];
  for(i=n;i;i--)sa[c[x[i]]--]=i;

//按第一个字母排序 for(i=1;i<=n;i++)c[x[i]=s[i]]++; for(i=1;i<=m;i++)c[i]+=c[i-1]; for(i=n;i;i--)sa[c[x[i]]--]=i;