提交时间:2026-04-24 16:31:01
运行 ID: 87724
import sys def main(): text = sys.stdin.read() # 提取字母(转为小写)和它们在原文本中的位置 letters = [] positions = [] for i, c in enumerate(text): if c.isalpha(): letters.append(c.lower()) positions.append(i) n = len(letters) if n == 0: print(0) return max_len = 1 start_in_letters = 0 # 在 letters 中的起始索引 # 中心扩展法找最长回文 for center in range(n): # 奇数长度回文 l, r = expand(letters, center, center) length = r - l + 1 if length > max_len: max_len = length start_in_letters = l # 偶数长度回文 l, r = expand(letters, center, center + 1) length = r - l + 1 if length > max_len: max_len = length start_in_letters = l # 映射回原始字符串 start_pos = positions[start_in_letters] end_pos = positions[start_in_letters + max_len - 1] palindrome_text = text[start_pos:end_pos + 1] print(max_len) print(palindrome_text, end='') def expand(letters, left, right): while left >= 0 and right < len(letters) and letters[left] == letters[right]: left -= 1 right += 1 return left + 1, right - 1 if __name__ == "__main__": main()