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/

相关推荐
小wanga几秒前
【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝
c++·算法·机器学习·剪枝
じ☆ve 清风°2 分钟前
理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析
开发语言·javascript·ecmascript
豌豆花下猫4 分钟前
Python 潮流周刊#105:Dify突破10万星、2025全栈开发的最佳实践
后端·python·ai
天宫风子12 分钟前
线性代数小述(一)
线性代数·算法·矩阵·抽象代数
sss191s13 分钟前
Java 集合面试题从数据结构到 HashMap 源码剖析详解及常见考点梳理
java·开发语言·数据结构
IGP919 分钟前
20250606-C#知识:委托和事件
开发语言·c#
hjyowl29 分钟前
题解:AT_abc407_c [ABC407C] Security 2
c语言·开发语言·算法
唐墨12330 分钟前
android与Qt类比
android·开发语言·qt
Code_流苏1 小时前
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
开发语言·c++·stl容器·课设·期末大作业·日历程序·面向对象设计