Java数据结构与算法(最长回文子串中心扩散法)

前言

回文子串是练习数据结构和算法比较好的使用场景,可以同时练习到双指针、动态规划等一些列算法。

实现原理

中心扩散算法实现。这里定义最长回文子串长度的大小为maxLen,起点位置为0.

奇数个数为中心点和偶数个数为中心点分别计算回文长度大小。注意while退出条件为不匹配回文子串,计算长度时需回退right和left。此时长度计算公式为(right-1)-(left+1)+1

得到最长回文长度大小后再计算起点位置。i-(maxLen-1)/2

具体代码实现

java 复制代码
class Solution {
    public String longestPalindrome(String s) {

        int maxLen=1;
        int begin=0;
        char[] charArray=s.toCharArray();
        for(int i=0;i<charArray.length-1;i++){
            int oneNum=validCicle(charArray,i,i);
            int twoNum=validCicle(charArray,i,i+1);
            int max=Math.max(oneNum,twoNum);
            if(maxLen<max){
                maxLen=max;
                begin=i-(maxLen-1)/2;
            }
        }
        return s.substring(begin,begin+maxLen);
    }



    public int validCicle(char[] charArray,int left,int right){
        while(left>=0&&right<charArray.length){
            if(charArray[left]==charArray[right]){
                left--;
                right++;
            }else{
                break;
            }
        }
        return (right-1)-(left+1)+1;
    }
}

QA:待定

相关推荐
开开心心就好4 分钟前
电子教鞭工具支持画框写字插图片功能齐全
android·开发语言·前端·javascript·人工智能·pdf·html
Dovis(誓平步青云)10 分钟前
拍视频前先把镜头想清楚:做一个分镜取景辅助器
android·java·服务器·javascript·人工智能
AI人工智能+电脑小能手13 分钟前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
zx_7414848114 分钟前
【Python入门】爬虫实战:Requests + XPath 从基础到实战
开发语言·爬虫·python
吴声子夜歌27 分钟前
Java——开发中通用的方法和准则(二)
java·开发语言·php
袁震34 分钟前
HarmonyOS 应用包体积优化与上架自检实战:从 76.2MB 到 3.6MB
java·华为·性能优化·harmonyos
江屿风39 分钟前
C++OJ题经验总结(竞赛)5
开发语言·c++
溪语流沙42 分钟前
【Python项目实战】虚拟环境与依赖管理:venv / pip / requirements.txt实操
开发语言·python·pip
神威难绷泪42 分钟前
Linux应用软件编程:线程分离属性 互斥机制 同步机制 死锁
linux·开发语言·算法·线程
zcmodeltech1 小时前
反应装置模型控制系统设计与实现:多设备协同联动方案
java·网络·数据库·stm32·嵌入式硬件·能源·制造