zoukankan      html  css  js  c++  java
  • 5. Longest Palindromic Substring

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

    Example:

    Input: "babad"
    
    Output: "bab"
    
    Note: "aba" is also a valid answer.
    

    Example:

    Input: "cbbd"
    
    Output: "bb"

    本题开始的时候并不知道用什么办法来做,看了discussion才知道的,思路是,遍历数组元素的每一个元素值,对于每一个元素值分别以该元素和该元素及后面(palindrome为奇数和偶数)的元素作为
    中心点,然后扩展记录maxlen和起始位置的index,最后返回substring就可以了。这道题和其他的palindrome不同之处在于,别的题都是从两遍往中间去判断,而这道题是从中间往两边去判断,代码如下:
     1 public class Solution {
     2     int lo,maxlen;
     3     public String longestPalindrome(String s) {
     4         if(s.length()<2) return s;
     5         for(int i=0;i<s.length();i++){
     6             extendPalindrome(s,i,i);
     7             extendPalindrome(s,i,i+1);
     8         }
     9         return s.substring(lo,lo+maxlen);
    10     }
    11     public void extendPalindrome(String s,int l,int r){
    12         while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){
    13             l--;
    14             r++;
    15         }
    16         if(maxlen<r-l-1){
    17             maxlen = r-l-1;
    18             lo = l+1;
    19         }
    20     }
    21 }
  • 相关阅读:
    暑假第三周
    暑假第二周
    bzoj3572:[Hnoi2014]世界树
    bzoj3998:[TJOI2015]弦论
    luoguP4242树上的毒瘤
    bzoj1339/1163:[Baltic2008]Mafia
    bzoj3507:[Cqoi2014]通配符匹配
    bzoj1449:[JSOI2009]球队收益/bzoj2895:球队预算
    bzoj2243:[SDOI2011]染色
    bzoj4516:[Sdoi2016]生成魔咒
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6388576.html
Copyright © 2011-2022 走看看