1. 题目:
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:
输入:s = “cbbd”
输出:“bb”
2. 我的代码:
class Solution: def longestPalindrome(self, s: str) -> str: result_len = 0 result = "" # 左右指针 从中间向左右扩散(问题在于,回文串可能是奇数,也可能是偶数 # 奇数 for i in range(len(s)): result_len_i = 1 left_p = i - 1 right_p = i + 1 while left_p >= 0 and right_p <= len(s) - 1: if s[left_p] == s[right_p]: result_len_i += 2 left_p -= 1 right_p += 1 else: break if result_len_i > result_len: result_len = result_len_i result = s[left_p + 1: right_p] # 偶数 for i in range(len(s) - 1): result_len_i = 0 left_p = i right_p = i + 1 while left_p >= 0 and right_p <= len(s) - 1: if s[left_p] == s[right_p]: result_len_i += 2 left_p -= 1 right_p += 1 else: break if result_len_i > result_len: result_len = result_len_i result = s[left_p + 1: right_p] return result
如果当前回文子串的长度能比目前最长的回文子串长,则记录一下。