LeetCode[5] 最长的回文子串
题目描述
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.
即给定一个字符串,返回该字符串最长的回文子串
如给出“acabcddcbadike",返回“abcddcba"。
思路
回文子串分为长度为偶数(中间两个字符相同,就像示例)和长度为奇数两种。
从头往后遍历s.length()趟,第i趟指针j,k从i(奇数)或j从i,k从i+1(偶数)向两边扩散(s.charAt(i)和s.charAt(j)相等才扩散),k-j-1为该回文子串长度,若比之前maxlen大,则更新maxlen。
代码如下
public class Solution {
    private int lo,maxlen;//子串的起始和长度
    public String longestPalindrome(String s) {
        int len=s.length();
        if (len<2)
            return s;
        for (int i=0;i<len-1;i++){//n躺遍历
            extendPalindrome(s,i,i); //子串长度为奇数
            extendPalindrome(s,i,i+1);//子串长度为偶数
        }
        return s.substring(lo,lo + maxlen);
    }
    private void extendPalindrome(String s,int j,int k){
        while(j>=0 && k<s.length() && s.charAt(j)==s.charAt(k)){
            --j;
            ++k;
        }
        if(maxlen<k-j-1){
            lo=j+1;
            maxlen=k-j-1;
        }
    }
}
												
											LeetCode[5] 最长的回文子串的更多相关文章
- leetcode 5 查找最长的回文子串
		
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
 - manacher算法处理最长的回文子串(二)
		
在上篇<manacher算法处理最长的回文子串(一)>解释了manacher算法的原理,接着给该算法,该程序在leetcode的最长回文子串中通过.首先manacher算法维护3个变量.一 ...
 - python经典算法题:求字符串中最长的回文子串
		
题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...
 - bzoj2565 最长双回文子串
		
Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同).输入长度为n的串S,求S的最长双回文子串T, ...
 - 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
		
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...
 - manacher算法处理最长的回文子串(一)
		
引言 相信大家都玩过折叠纸张,如果把回文串相当于折叠一个A4纸,比如ABCDDCBA就是沿着中轴线(D与D之间)对折重合,那么这个就是一个回文串.或者是ABCDEDCBA的中轴线就是E,那么沿着中轴线 ...
 - LeetCode:5_Longest Palindromic Substring | 最长的回文子串 | Medium
		
题目: Given a , and there exists one unique longest palindromic substring. 解题思路:1.简单思路:暴力破解法,时间复杂度O(n^ ...
 - c++ 获取字符串中最长的回文子串
		
#include <vector> #include <iostream> #include <string> using namespace std; strin ...
 - LeetCode之“字符串”:最短回文子串
		
题目链接 题目要求: Given a string S, you are allowed to convert it to a palindrome by adding characters in f ...
 
随机推荐
- 阿里签名中URLEncode于C#URLEncod不同之处
			
问题 如上图所示,阿里云的PercentEncode 转换! 为 %21 PercentEncode 源码为: package com.aliyuncs.auth; import java.io.Un ...
 - HTML5 input元素新的特性
			
在HTML5中,<input>元素增加了许多新的属性.方法及控件.本文章分别对这三方面进行介绍. 目录 1. 属性 2. 方法 3. 新控件 1. 属性 <input>元素在H ...
 - PHP赋值运算
			
1. 赋值运算:= ,意思是右边表达式的值赋给左边的运算数. $int1=10; $int1=$int1-6; //$int1=4 echo $int1,"<br>"; ...
 - Android 6.0 权限知识学习笔记
			
最近在项目上因为6.0运行时权限吃了亏,发现之前对运行时权限的理解不足,决定回炉重造,重新学习一下Android Permission. 进入正题: Android权限 在Android系统中,权限分 ...
 - ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存
			
ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完 ...
 - Hadoop学习之旅二:HDFS
			
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
 - 深入理解 Android 之 View 的绘制流程
			
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...
 - A*算法应用[转]
			
转自:http://www.cnblogs.com/zhoug2020/p/3468167.html 这是一篇十分精彩/易懂的博客,感谢原博主!本文通过自己的理解在原博文基础上突出一些重点字眼,句子. ...
 - git添加GitHub远程库
			
已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作 首先,登陆GitHub, ...
 - Centos6.5 配置Nginx开机自启动
			
1.在/etc/init.d/目录下创建 nginx 文件,内容如下: #!/bin/sh # # nginx - this script starts and stops the nginx dae ...