

Python,速成心法
敲代码,查资料,问Ai
练习,探索,总结,优化

★★★★★博文创作不易,源码代码的过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★
Python打包教程07:还不会用--add-data参数,添加资源文件吗?
Python打包教程04:UPX安装与使用(减小.exe体积)
Python打包教程03:PyInstaller命令使用指南
Python查询CPU+硬盘+网卡MAC +主板+BIOS序列号
Python教程:PyCharm安装过程中遇到的中英文对照表
Python教程110:单线程和多线程源码演示(threading)
Python教程108:针对面向对象Class类知识要点,源码示例再演示。
Python入门教程04:流程控制语句(if+for+continue等)
Python教程:3种格式符(str.format()+f-string+%)的常见用法
输入: "babad"输出: "bab" # 注:"aba" 也是一个有效答案
↓ 完整源码如下 ↓
# -*- coding: utf-8 -*-# @Author : 小红牛# 微信公众号:wdPythondef longest_palindrome(s: str) -> str:"""返回 s 中最长回文子串。参数:s: 输入字符串返回:str: 最长回文子串"""if not s:return ""start = 0 # 最长回文子串的起始索引max_len = 1 # 最长回文子串的长度(至少为1)def expand_around_center(left: int, right: int):"""从中心向两边扩展,返回当前扩展后的回文长度"""nonlocal start, max_lenwhile left >= 0 and right < len(s) and s[left] == s[right]:left -= 1right += 1# 退出循环时,s[left+1:right] 是回文,长度为 (right-1) - (left+1) + 1 = right - left - 1length = right - left - 1if length > max_len:max_len = lengthstart = left + 1for i in range(len(s)):# 奇数长度回文:中心是一个字符expand_around_center(i, i)# 偶数长度回文:中心是两个相同字符之间expand_around_center(i, i + 1)return s[start:start + max_len]# 测试用例if __name__ == "__main__":print(longest_palindrome("babad")) # "bab" 或 "aba"print(longest_palindrome("cbbd")) # "bb"print(longest_palindrome("a")) # "a"print(longest_palindrome("ac")) # "a" 或 "c"print(longest_palindrome("我们家的上海自来水来自海上")) # 上海自来水来自海上print(longest_palindrome("abcba")) # "abcba"print(longest_palindrome("abaxabax")) # "abaxaba" (或类似)
完毕!!感谢您的收看
------★★历史博文集合★★------
