Rust 力扣 - 5. 最长回文子串

文章目录

题目描述

题解思路

从中心点先寻找和中心点相等的左右端点,在基于左右端点进行往外扩散,直至左右端点不相等或者越界,然后左右端点这个范围内就是我们找寻的回文串,我们遍历中心点,就能执行上述流程就能查询所有的回文串,我们只需要取其中的最长的回文子串即可

题解代码

rust 复制代码
impl Solution {
    pub fn longest_palindrome(s: String) -> String {
        let s = s.as_bytes();

        let mut left = 0;
        let mut right = 0;
        
        let mut i = 0;

        while i < s.len() {
            let mut l = i;
            let mut r = i;

            while l > 0 && s[l - 1] == s[i] {
                l -= 1;
            }

            while r + 1 < s.len() && s[r + 1] == s[i] {
                r += 1;
            }

            let mut offset = 1;
            while l >= offset && r + offset < s.len() && s[l - offset] == s[r + offset] {
                offset += 1;
            }

            offset -= 1;

            if r - l + (offset << 1) > right - left {
                left = l - offset;
                right = r + offset;
            }

            i = r + 1;
        }

        String::from_utf8(s[left..right + 1].to_vec()).unwrap()
    }
}

题解链接

https://leetcode.cn/problems/longest-palindromic-substring/

相关推荐
梨涡泥窝1 分钟前
JavaWeb——基于 Spring Boot + Vue 的图书管理系统的设计与实现
vue.js·spring boot·后端
shehuiyuelaiyuehao2 分钟前
算法44,模拟算法,数青蛙
算法·哈希算法·散列表
白色的北极熊13 分钟前
c语言 输出菱形字符串
c语言·开发语言
hanlin0316 分钟前
刷题笔记:力扣第287题-寻找重复数
笔记·算法·leetcode
kevin_kang26 分钟前
第02章 对话时间线与延迟分析
算法
测试199833 分钟前
Jmeter接口自动化测试:Jmeter变量的使用
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·接口测试
科学实验家36 分钟前
最小生成树:Prim,kruskal
数据结构·c++·算法
jsl_jsl_jsl37 分钟前
LLM工具调用速记
后端
YIAN37 分钟前
手撸社区后端:一套可落地的用户 - 文章 - 互动体系 MySQL 表设计与优化思路
后端·mysql
柯南466838 分钟前
【AI开发之Rust】第 4 课:所有权系统 —— Rust 的灵魂
rust