zoukankan      html  css  js  c++  java
  • 【LeetCode】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, and there exists one unique longest palindromic substring.

    思路:用Manacher算法得到最大回文子串的长度,得到带#的最大回文子串,用split剔除#后转化成String形式输出即可。

    public class Solution {
        public String longestPalindrome(String s) {
            if(s==null || s.length()==0){
                return null;
            }
            char[] charArr=manacherString(s);
            int[] pArr=new int[charArr.length];
            
            int index=-1;
            int center=-1;
            int pR=-1;
            int max=0;
            for(int i=0;i<charArr.length;i++){
                pArr[i]=pR>i?Math.min(pArr[2*index-i],pR-i):1;
                
                while(i+pArr[i]<charArr.length && i-pArr[i]>-1){
                    if(charArr[i+pArr[i]]==charArr[i-pArr[i]]){
                        pArr[i]++;
                    }else{
                        break;
                    }
                }
                if(i+pArr[i]>pR){
                    pR=i+pArr[i];
                    index=i;
                }
                
                if(pArr[i]-1>max){
                    max=pArr[i]-1;//得到最大回文子串的长度
                    center=i;
                }
            }
            //以string形式返回最大回文子串
             String str=new String(charArr);
             String[] strArr=str.substring(center-max,center+max).split("#");
             StringBuffer sb=new StringBuffer();
             for(int i=0;i<strArr.length;i++){
                 sb.append(strArr[i]);
             }
            return sb.toString();
        }
        
        public static char[] manacherString(String str){
            char[] charArr=str.toCharArray();
            char[] res=new char[2*str.length()+1];
            int index=0;
            for(int i=0;i!=res.length;i++){
                res[i]=(i&1)==0?'#':charArr[index++];
            }
            return res;
        }
    }
    

      

  • 相关阅读:
    水洼,八连杀
    友链
    万能转换字符类型到int ,int到string,string到char or char *等等
    蓝桥杯模拟赛题
    2020 03 21
    2019 12 02 reading
    CentOS 7 定时计划任务设置
    xinted &telnet
    2019 12 02 section C one
    【暖*墟】#洛谷网课1.30# 树上问题
  • 原文地址:https://www.cnblogs.com/zhstudy/p/5994177.html
Copyright © 2011-2022 走看看