5 Longest Palindromic Substring
2015-08-27 21:18
246 查看
public class Solution {
public String longestPalindrome(String s) {
if(s==null||" ".equals(s)||s.length()==0) return " ";
int len = s.length();
int maxLen = 0, mf = 0, mr = 0;
for(int i=0;i<len;++i){
//长度为奇数
int f = i - 1, r = i+1;
while(f>=0&&r<len){
if(s.charAt(f)==s.charAt(r)){
--f;
++r;
}else{
break;
}
}
if(r-f-1 > maxLen){
maxLen = r - f - 1;
mf = f + 1;
mr = r - 1;
}
//长度为偶数
int p = i, q = i + 1;
while(p>=0&&q<len){
if(s.charAt(p)==s.charAt(q)){
--p;
++q;
}else{
break;
}
}
if(q-p-1 > maxLen){
maxLen = q - p - 1;
mf = p + 1;
mr = q - 1;
}
}
return s.substring(mf, mr + 1);
}
}
public String longestPalindrome(String s) {
if(s==null||" ".equals(s)||s.length()==0) return " ";
int len = s.length();
int maxLen = 0, mf = 0, mr = 0;
for(int i=0;i<len;++i){
//长度为奇数
int f = i - 1, r = i+1;
while(f>=0&&r<len){
if(s.charAt(f)==s.charAt(r)){
--f;
++r;
}else{
break;
}
}
if(r-f-1 > maxLen){
maxLen = r - f - 1;
mf = f + 1;
mr = r - 1;
}
//长度为偶数
int p = i, q = i + 1;
while(p>=0&&q<len){
if(s.charAt(p)==s.charAt(q)){
--p;
++q;
}else{
break;
}
}
if(q-p-1 > maxLen){
maxLen = q - p - 1;
mf = p + 1;
mr = q - 1;
}
}
return s.substring(mf, mr + 1);
}
}
相关文章推荐
- Java——反射
- 编程之美-编程判断两个链表(可能含环)是否相交以及相交的第一个结点
- u3d_shader_surface_shader_5
- <!DOCTYPE> 的理解
- Django之第一个app<3>
- php设计模式专题附源码(解释器模式、工厂方法模式、外观模式、装饰模式、建造者模式)
- 基于飞淩OK6410开发板与Ubuntu 10.04 的NFS的配置
- 编程之美-判断两个链表是否相交
- 决策理论(Decision theory)&自动规划和调度(Automated planning and scheduling)(双语)
- iOS中ScrollView(滚屏,引导界面,和判段是否是第一次登陆)
- leetcode题解
- BZOJ3668: [Noi2014]起床困难综合症|2进制拆分|贪心
- c#—细说多线程(2)
- 编程之美-从无头单链表中删除节点
- usaco Ski Course Design
- 包含min函数的栈
- [持续更新]JavaScript学习笔记(八)
- 命令设置linux ip
- createElement appendChild
- 318川藏线骑行