目录
题目描述
给定一个字符串 S,请你求出 S 的最长回文子串。
输入描述
输入仅一行,包含一个字符串 S,保证 S 只包含小写字母、大写字母、数字。
输出描述
输出共 11 行,包含一个整数,表示答案。
输入输出样例
输入:
aa1ABA1b输出:
5运行限制
- 最大运行时间:2s
- 最大运行内存: 256M
解题思路
要求字符串 S 的最长回文子串,这里包含了 3 个限制条件:最长、回文和子串。
其中如何高效地判断字符串是否是回文字符串是解决问题的关键。
方法一:暴力求解(简单粗暴,可能超时)
#定义函数用于判断是否是回文字符串
def reversed_string(s):
reversed_s = s[::-1]
return s == reversed_s
string = input() #输入字符串
max_len = 1 #初始化最长回文子串长度为1
#嵌套循环
for i in range(len(string)):
for j in range(i+1, len(string)):
s = string[i:j+1] #取子串
if reversed_string(s) is True: #判断是否是回文子串
count_len = len(s)
if max_len < count_len:
max_len = count_len #更新子串长度
print(max_len)
利用双层循环,将所给字符串的所有子串找出来,依次判断当前子串是否是回文字符串,同时记录、更新回文子串的长度,最终找出最长的回文子串。
嵌套循环的时间复杂度为,每次循环中调用 reversed_string 函数时间复杂度为

最低0.47元/天 解锁文章
2258






