博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Manacher算法——最长回文子串(O(n))
阅读量:4684 次
发布时间:2019-06-09

本文共 910 字,大约阅读时间需要 3 分钟。

1 public static int Manacher(String A,int n){ 2         char AA[]=A.toCharArray(); 3         char BB[]=new char[2*n+3]; 4         int k=0; 5          for(int i=1;i<=2*n+1;i=i+2){ 6              BB[i]='#'; 7              if(i+1<=2*n+1)BB[i+1]=AA[k++]; 8          } 9          BB[0]='$';//防止数组越界10          BB[2*n+2]='&';//防止数组越界11          int len[]=new int[2*n+3];12          int po=0;//最长回文子串的中心13          int board=0;//最长回文子串的右边界14          int sum=0;//最长回文子串长度15          for(int i=1;i<=2*n+1;i++){16              if(i<=board)len[i]=len[2*po-i]<(board-i)?len[2*po-i]:board-i;17              else len[i]=1;18         while(BB[i+len[i]]==BB[i-len[i]])19             len[i]++;20         if(i+len[i]>board){21             board=i+len[i];22             po=i;23         }24         sum=sum>len[i]?sum:len[i];25     }26          return sum>2?sum-1:0;27 }
View Code

 

转载于:https://www.cnblogs.com/nihai/p/6668604.html

你可能感兴趣的文章
mysql数据工厂生产_MySQL超时与天蓝色数据工厂副本
查看>>
python缩进可以用在任何语句之后_每天一道Python选择题--python缩进
查看>>
微信小程序获取用户信息解密AES并且注意如何获取unionid
查看>>
JavaScript设计模式----1
查看>>
Qt实现半透明遮罩效果
查看>>
erlang调优方法
查看>>
Mysql linux -N命令
查看>>
daily scrum 12.5
查看>>
linux-ftp install
查看>>
NetXray
查看>>
让历史告诉我们未来
查看>>
UVa540 Team Queue
查看>>
android 练习之路 (八)
查看>>
tp5 中 model 的聚合查询
查看>>
android wear开发之:增加可穿戴设备功能到通知中 - Adding Wearable Features to Notifications...
查看>>
压缩文件函数库(转载)
查看>>
【转】ubuntu12.04没有/var/log/messages解决
查看>>
Oracle EBS 初始化用户密码
查看>>
SYS_CONTEXT 详细用法
查看>>
Pycharm配置autopep8让Python代码更符合pep8规范
查看>>