
LeetCode5 最长回文串
初始化:创建一个数组 遍历每个字符:对于每个字符,分别处理奇数长度和偶数长度的回文。 扩展检查:对于每个中心,向左右两边扩展,直到字符不匹配或超出字符串范围。 记录最大长度:在每次扩展后,更新最大回文长度和对应的子串。 初始化: 遍历每个字符:外层循环遍历字符串中的每个字符,作为中心。 奇数长度扩展:以当前字符为中心,向左右扩展,计算当前回文的长度,并更新最大长度和结果。 偶数长度扩展:如果当前字符不是最后一个字符,以当前字符和下一个字符为中心,向外扩展,同样更新最大长度和结果。 返回结果:遍历完成后,返回最长回文子串。
发布日期:2021-05-14 23:53:06
浏览次数:16
分类:精选文章
本文共 1337 字,大约阅读时间需要 4 分钟。
为了找到给定字符串中最长的回文子串,可以使用中心扩展法。这种方法通过以每个字符或字符对为中心,向两边扩展,找到最长的回文子串。以下是详细的解决方案:
方法思路
中心扩展法的基本思路是对每个字符(单独作为中心)和每对相邻字符(作为中心)向外扩展,检查是否形成回文。具体步骤如下:
max_len
来记录每个位置的最大回文长度。这种方法的时间复杂度为O(n^2),其中n是字符串的长度。对于长度为1000的字符串,性能是可以接受的。
解决代码
def longestPalindrome(s): n = len(s) if n == 0: return "" max_len = 0 result = s[0] if n >= 1 else "" for i in range(n): # 处理奇数长度的回文 l, r = i, i while l >= 0 and r < n and s[l] == s[r]: l -= 1 r += 1 current_len = r - l - 1 if current_len > max_len: max_len = current_len result = s[i:i + current_len] # 处理偶数长度的回文 if i < n - 1: l, r = i, i + 1 while l >= 0 and r < n and s[l] == s[r]: l -= 1 r += 1 current_len = r - l - 1 if current_len > max_len: max_len = current_len result = s[i:i + current_len] return result
代码解释
max_len
数组初始化为0,result
记录最长回文子串。这种方法高效且简洁,能够在合理时间内处理长度较大的字符串,确保结果正确。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月20日 19时05分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
redis简单使用示例(附代码)
2019-03-12
centos7 安装 mongodb3.6.3
2019-03-12
LIVE 预告 | 牛津胡庆拥:学习理解大规模点云
2019-03-12
java有道翻译
2019-03-12
lora技术在无线抄表行业应用
2019-03-12
leetcode——区域和检索
2019-03-12
msfvenom的使用&免杀&外网渗透
2019-03-12
HTTP/2 协议详解
2019-03-12
grafana改用https登录
2019-03-12
使用jenkins进行项目的自动构建部署
2019-03-12
使用MySQLTuner-perl对MySQL进行优化
2019-03-12
2018年3月最新的Ubuntu 16.04.4漏洞提权代码
2019-03-12
异或交换两个数的值
2019-03-12
使用python绘出常见函数
2019-03-12
Golang AES加密
2019-03-12
Puppet的一些奇技淫巧
2019-03-12
foreman源NO_PUBKEY 6F8600B9563278F6
2019-03-12
亚马逊aws文档语法错误
2019-03-12
什么是5G?居然有人用漫画把它讲得如此接地气!
2019-03-12
Spring cloud --分布式配置中心组件Spring Cloud Config
2019-03-12