leetcode5 最长回文子串

给你一个字符串 s,找到 s 中最长的 回文 子串。

示例 1:
复制代码
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
复制代码
输入:s = "cbbd"
输出:"bb"
思路

以当前字符为中心点,向两边扩展

以当前字符和下一个字符为中心(即回文串长度为偶数)

更新最长回文子串的起始和结束位置

java 复制代码
class Solution {
    public String longestPalindrome(String s) {
        if (s == null || s.length() < 1) {
            return "";
        }
        int start = 0, end = 0;
        for (int i = 0; i < s.length(); i++) {
            int len1 = expandAroundCenter(s, i, i);
            int len2 = expandAroundCenter(s, i, i + 1);
            int len = Math.max(len1, len2);
            if (len > end - start + 1) {
                start = i - (len - 1) / 2;
                end = i + len / 2;
            }
        }
        return s.substring(start, end + 1);
    }
    private int expandAroundCenter(String s, int left, int right) {
        int L = left, R = right;
        while (L >= 0 && R < s.length() && s.charAt(L) == s.charAt(R)) {
            L--;
            R++;
        }
        return R - L - 1;
    }
}
相关推荐
小桥风满袖5 分钟前
极简三分钟ES6 - ES9中对象扩展
前端·javascript
云舟吖13 分钟前
基于 electron-vite 实现一个 RPA 网页自动化工具
前端·架构
用户94818176754416 分钟前
超越NAT:如何构建高效、安全的内网穿透隧道
前端
明天的明19 分钟前
vue双向数据绑定失效
前端
叽哥19 分钟前
Kotlin学习第 9 课:Kotlin 实战应用:从案例到项目
android·java·kotlin
bug_kada22 分钟前
前端路由:深入理解History模式
前端·面试
LIUENG23 分钟前
快速开发一个 VSCode 插件
前端·visual studio code
bug_kada24 分钟前
前端路由:Hash vs History,一篇讲明白!
前端·面试
城中的雾24 分钟前
HarmonyOS应用拉起系列(三):如何直接拉起腾讯/百度/高德地图进行导航
前端·javascript·harmonyos
李明卫杭州27 分钟前
CSS 中 nth-child 选择器的详细用法和示例
前端