5.Longest Palindromic Substring
2015-09-16 13:13
204 查看
题目
Given a string S,find the longest palindromic substring in S.
You may assume that the maximum length of S is
1000, and there exists one unique longest palindromic substring.
解题思路
1.使用DP的时空复杂度均为O(n^2),超时2.枚举所有的中心(实际的和虚拟的字符),求出以该中心形成的最长回文串,再剪枝(当前最长回文串 < 以当前中心能形成的最长回文串)。
代码
public String longestPalindrome(String s) { if(s.length()<=1) return s; String str=s.substring(0,1); int max=1; int N=2*s.length()-3; int[][] p=new int [2]; int f,b; for(int i=0;i<N;++i){ //initialization p[i][0]=i/2; p[i][1]=p[i][0]+1+i%2; } for(int i=0;i<=N/2 && max<s.length()-i;++i){ //length=s.length()-i f=p[N/2-i][0]; b=p[N/2-i][1]; while(f>=0 && s.charAt(f)==s.charAt(b)){--f;++b;} if(b-f-1>max) { max=b-f-1; str=s.substring(f+1,b); } f=p[N/2+i][0]; b=p[N/2+i][1]; while(i!=0 && b<s.length() && max<s.length()-i && s.charAt(f)==s.charAt(b)){--f;++b;} if(b-f-1>max) { max=b-f-1; str=s.substring(f+1,b); } } return str; }
运行结果
相关文章推荐
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第十七节:地表的实现
- iOS中AOP与Method Swizzling 项目中的应用
- 单例实现方式
- hdu5438邻接表+topsprt+并查集
- Powershell 查询 Windows 日志
- Powershell 查询 Windows 日志
- shell脚本如何获取当前时间
- handler消息处理机制
- 全文检索引擎Solr系列
- solr提交示例数据到索引库
- reduce、map、filter 互相转化
- 接口和抽象类的区别
- 联合县城市,采用ajax,而使用ul模拟select下拉
- Android setDisplayOptions 具体的使用说明
- 深入了解一下PYTHON中关于SOCKETSERVER的模块-B
- Unity3d 引擎原理详细介绍、Unity3D引擎架构设计
- Ubuntu桌面生存指南
- Tengine:基于Nginx的衍生版
- Maven配置setting.xml详细说明
- 为什么ping不通某网站,但是却可以访问该网站?