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

【算法day5】最长回文子串——马拉车算法

最长回文子串
给你一个字符串 s,找到 s 中最长的 回文 子串。
https://leetcode.cn/problems/longest-palindromic-substring/description/
在这里插入图片描述
算法思路:

class Solution {
public:
    string longestPalindrome(string s) {
        int s_len = s.size();
        string tmp = "#";
        for (int i = 0; i < s_len; i++) {
            (tmp += s[i]) += "#";
        }
        int begin = 0, maxlenth = 0;
        int c = 0;                 // 存放最右侧的中心和半径
        vector<int> r(tmp.size()); // 存放半径长
        for (int i = 1; i < tmp.size(); i++) {
            if (i < c + r[c]) {
                // 在蘑菇半径内,是左侧对称值,或者蘑菇的边缘值中更小的那一个
                r[i] = min(r[2 * c - i], c + r[c] - i);
            }
            // 如果是蘑菇边缘,要进行中心拓展
            while (i - r[i] >= 0 && tmp[i - r[i]] == tmp[i + r[i]])
                r[i]++;
            --r[i];
            // 如果是更右侧的蘑菇
            if (i + r[i] > c + r[c])
                c = i;
            if (maxlenth < r[i]) {
                maxlenth = r[i];
                begin = (i - r[i]) / 2 ;;
            }
        }
        return s.substr(begin, maxlenth);
    }
};
http://www.dtcms.com/a/59798.html

相关文章:

  • 静态网页的爬虫(以电影天堂为例)
  • Git学习笔记(二)
  • 大白话react第十八章React 与 WebGL 项目的高级拓展与优化
  • Unity之如何实现哔哩哔哩直播弹幕游戏
  • docker本地部署RagFlow
  • Java集合框架全解析:从数据结构到高并发简单解析
  • 技术周总结 03.03 - 03.09 周日(Java监控 SpringAI)
  • PY32MD320单片机 QFN32封装,内置多功能三相 NN 型预驱。
  • 在github action工作流使用nw和nw-builder打包
  • 读书报告」网络安全防御实战--蓝军武器库
  • 【jstack查询线程信息】1.对比下arthas的thread 和jvm指令
  • linux下 jq 截取json文件信息
  • 前端数据模拟利器 Mock.js 深度解析
  • Etcd学习笔记
  • 通过一篇文章让你稳过计算机二级(C语言)
  • 为wordpress自定义一个留言表单并可以在后台进行管理的实现方法
  • 火语言RPA--指定PDF页另存为图片
  • Redis客户端
  • swift-5-汇编分析闭包本质
  • 2025年基于Zabbix主动发现机制实现Nacos服务动态监控
  • vue3中使用h()函数加载elementPlus 组件
  • 3个 Vue Scoped 的核心原理
  • Python中的*args和**kwargs:灵活参数处理的完全指南
  • Spring Boot 本地缓存工具类设计与实现
  • 【数据结构与算法】Java描述:第三节:栈与队列
  • 《苍穹外卖》SpringBoot后端开发项目重点知识整理(DAY1 to DAY3)
  • DeepSeek:中国AGI先锋,用技术重塑通用人工智能的未来
  • WPF基础知识61-80
  • 【python】模块和包相关知识
  • cpu 多级缓存L1、L2、L3 与主存关系