Python双指针【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——5. 最长回文子串
📢📢📢📣📣📣
🐸Hello,大家好我是Dream,欢迎大家来到刷题乐园😜😜😜🐹
游园须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
🐹
导游主要使用Python语言,同时欢迎其他语言的小伙伴进来玩耍
☀️☀️☀️
🐹游园过程中,如果发现有错误的话,欢迎大家评论区及时斧正❤️❤️❤️
🐹
最后,祝大家游园愉快,一起加油进步🍺🍺🍺
💦乐园描述
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
示例 3:
输入:s = "a"
输出:"a"
示例 4:
输入:s = "ac"
输出:"a"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母(大写和/或小写)组成
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
💦游园准备
这道题看似麻烦,但仔细考虑回文子串只有两种情况:
奇数回文,即 aba
偶数回文,即 abba
那么我们只需要循环字符串的每一个index,当满足一下条件时,从中心向两边扩展:
left >= 0
right < len(s)
s[left] == s[right] 对于第三个条件,存在奇数回文和偶数回文的判断:
- 奇数回文时,我们初始left == right
- 偶数回文时,我们初始化right == left + 1
根据这两种情况进行遍历,最终即可获取结果。具体代码如下:
💦开始游玩
首先先写出一个找出回文数的函数,然后再进行函数调用,分为奇数和偶数两种:
nonlocal关键字用来在函数或其他作用域中使用并修改外层(非全局)变量(逐层到外面作用域找,直到全局作用域之前的局部作用域)。
使用总结:
1、局部作用域改变全局变量用global, global同时还可以定义新的全局变量
2、内层函数改变外层函数变量用nonlocal, nonlocal不能定义新的外层函数变量,只能改变已有的外层函数变量
3、同时nonlocal不能改变全局变量
# -*-coding:utf-8 -*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
def zuichang(s):
a=len(s)
if a<2:
return s
ret=''
def finder(left,right):
nonlocal ret
while left>=0 and right<a and s[left]==s[right]:
left-=1
right+=1
ret=s[left+1:right]if right-left-1>len(ret) else ret
for i in range(a):
finder(i,i)
finder(i,i+1)
return ret
print(zuichang("bacbad"))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
💦游玩总结
The stage extends as far as the heart goes~加油!❤️❤️❤️
**🏅今天是我打卡的第十五天,希望每天都能见到最棒的你🏅**
📢📢📢最后的福利
🍋🍋🍋最后一点小福利带给大家:如果想快速上手python的小伙伴们,这个详细整理PPT可以迅速帮助大家打牢python基础,需要的小伙伴们可以下载一下 Python入门基础教程全套+小白速成+学不会来找我! 🍻🍻🍻
还有自制表白神器,需要自取:
Python表白神器,源码+解析+各种完美配置+浪漫新颖 🍻🍻🍻
🌲🌲🌲 好啦,这就是今天要分享给大家的全部内容了
❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~
文章来源: xuyipeng.blog.csdn.net,作者:是Dream呀,版权归原作者所有,如需转载,请联系作者。
原文链接:xuyipeng.blog.csdn.net/article/details/119980505
- 点赞
- 收藏
- 关注作者
评论(0)