当前位置: 首页 > article >正文

【LeetCode】【算法】5. 最长回文子串

LeetCode 5. 最长回文子串

题目描述

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

思路

思路:中心扩散法
遍历字符串s,对每一个字符用中心扩散法。确定好中点之后向两边扩散,若两边字符相同则len+=2。若遍历下来len>maxLen则记录

代码

class Solution {
    public String longestPalindrome(String s) {
        // 中心扩散法,从字符串的每一个字符出发向两边扩散求最值
        if (s == null || s.length() == 0) {
            return "";
        }
        int strLen = s.length();
        int left = 0, right = 0;
        int len = 1;
        int maxStart = 0, maxLen = 0;

        for (int i = 0; i < strLen; i++) {
            // 这里就是判断回文字符串是从i本身开始向两边扩散
            // 还是从[left&i]向两边扩散
            // 还是从[i&right]向两边扩散
            left = i - 1;
            right = i + 1;
            while (left >= 0 && s.charAt(left) == s.charAt(i)) {
                len++;
                left--;
            }
            while (right < strLen && s.charAt(right) == s.charAt(i)) {
                len++;
                right++;
            }
            // 如果left == right,长度不断+2
            while (left >= 0 && right < strLen && s.charAt(right) == s.charAt(left)) {
                len = len + 2;
                left--;
                right++;
            }
            if (len > maxLen) {
                maxLen = len;
                maxStart = left;
            }
            len = 1; // 重置,进行下一趟遍历
        }
        return s.substring(maxStart + 1, maxStart + maxLen + 1);
    }
}

http://www.kler.cn/a/390759.html

相关文章:

  • 使用 Visual Studio Installer 彻底卸载 Visual Studio方法与下载
  • 1小时构建Vue3知识体系之vue的生命周期函数
  • D67【python 接口自动化学习】- python基础之数据库
  • Django博客网站上线前准备事项
  • 【机器学习】平均绝对误差(MAE:Mean Absolute Error)
  • 【MATLAB代码】二维平面上的TDOA,使用加权最小二乘法,不限制锚点数量,代码可复制粘贴
  • docker——项目部署
  • LabVIEW车辆侧翻预警系统
  • 工位管理革新:Spring Boot企业级系统
  • SpringBoot沙箱环境支付宝支付
  • C# 阿里云短信接口调用(不使用SDK,单文件完成)
  • Spring Spring Boot 常用注解总结
  • 前端零基础学习Day-Eight
  • 使用 Java 将 byte[] 转换为 File 对象并上传到外部服务器
  • 【已解决】Postman:Get请求传JSON数据
  • Kafka面试题(三)
  • html的week控件 获取周(星期)的第一天(周一)和最后一天(周日)
  • Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法
  • scikit-learn学习Day30
  • Java基础08(类与对象)
  • Java字符串的处理
  • SSE (Server-Sent Events) 服务器实时推送详解
  • 力扣-Hot100-哈希【算法学习day.30】
  • HTMLCSS: 日落卡片
  • MySQL核心业务大表归档过程
  • Attention is all you need详细解读