用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的sa值分别在两串字符中就好

 #include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define N 200010 int wa[N],wb[N],wv[N],ws[N];
int height[N],rank[N],sa[N]; int num[N];
char str[N]; int cmp(int *r,int a,int b,int l)
{
return r[a]==r[b] && r[a+l]==r[b+l];
} void da(int *r,int n,int m)
{
int i,j,p,*x=wa,*y=wb,*t;
for (i=;i<m;i++) ws[i]=;
for (i=;i<n;i++) ws[x[i]=r[i]]++;
for (i=;i<m;i++) ws[i]+=ws[i-];
for (i=n-;i>=;i--) sa[--ws[x[i]]]=i;
for (j=,p=;p<n;j*=,m=p)
{
for (p=,i=n-j;i<n;i++) y[p++]=i;
for (i=;i<n;i++) if (sa[i]>=j) y[p++]=sa[i]-j;
for (i=;i<n;i++) wv[i]=x[y[i]];
for (i=;i<m;i++) ws[i]=;
for (i=;i<n;i++) ws[wv[i]]++;
for (i=;i<m;i++) ws[i]+=ws[i-];
for (i=n-;i>=;i--) sa[--ws[wv[i]]]=y[i];
for (t=x,x=y,y=t,p=,x[sa[]]=,i=;i<n;i++)
x[sa[i]]=cmp(y,sa[i-],sa[i],j) ? p- : p++;
}
return ;
} void calheight(int *r,int n)
{
int i,j,k=;
for (i=;i<=n;i++) rank[sa[i]]=i;
for (i=;i<n;height[rank[i++]]=k)
for (k ? k-- : ,j=sa[rank[i]-];r[i+k]==r[j+k];k++);
return ;
} int main()
{
int i,k,l1,l2;
scanf("%s",str);
l1=strlen(str);
for (k=i=;i<l1;i++)
num[k++]=str[i]-'a'+;
num[k++]=;
scanf("%s",str);
l2=strlen(str);
for (i=;i<l2;i++)
num[k++]=str[i]-'a'+;
int n=l1+l2;
da(num,n+,);
calheight(num,n);
int ans=;
for (i=;i<k;i++)
if ((sa[i]<l1 && sa[i-]>l1) || (sa[i-]<l1 && sa[i]>l1))
ans=max(ans,height[i]);
printf("%d\n",ans);
return ;
}

最新文章

  1. 进程和线程及Linux下的编程
  2. 【HDU 1542】Atlantis(线段树+离散化,矩形面积并)
  3. python(pymysql)之mysql简单操作
  4. asp天猫自主发码的请求
  5. Scala下载安装配置(Mac)
  6. jQuery 的插件 dataTables
  7. 运用JavaScript构建你的第一个Metro式应用程序(on Windows 8)(一)
  8. js获取手机重力感应api
  9. 在Mac OS上配置Android开发环境
  10. 【SqlServer】JSON函数
  11. 我眼中的 Docker(二)Image
  12. maven的profile
  13. Mongo导出mongoexport和导入mongoimport介绍
  14. 廖雪峰Java3异常处理-2断言和日志-3使用Commons Logging
  15. 经实测解决Access-Control-Allow-Origin多域名跨域问题
  16. Ubuntu16.04 安装RabbitMQ
  17. 第九周个人PSP
  18. JUnit4.12 源码分析之Statement
  19. ROS Learning-018 Arduino-For-ROS-003 (总结篇) 模板程序 即 如何运行
  20. 常用模块(random)

热门文章

  1. docker centos7 配置和宿主机同网段IP
  2. viewDidLoad等相关函数调用
  3. 常量指针(pointer to constant)和指针常量(constant pointer)
  4. 懒癌晚期学图论的时候自己用C语言写了个求可达性矩阵的算法~
  5. Java的类加载
  6. linux下nginx、php和mysql安装配置
  7. linux下安装flash player
  8. mysql查询排名
  9. 第二十二节:scrapy爬虫识别验证码(一)类库安装
  10. 10-看图理解数据结构与算法系列(B+树)