当前位置: 首页 > 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);
    }
};

相关文章:

  • 静态网页的爬虫(以电影天堂为例)
  • 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服务动态监控
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 烤肉店从泔水桶内捞出肉串再烤?西安未央区市监局:停业整顿
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 通用汽车回应进口车业务调整传闻:因经济形势变化重组,致力于在中国持续发展
  • 女孩患异食癖爱吃头发,一年后腹痛入院体内惊现“头发巨石”
  • 订婚不等于性同意!山西订婚强奸案入选最高法案例