酷代码 AI
菜单

题目描述 给定一个字符串 s,找到 s 中最长的回文子串。s 的最大长度为 1000。 输入 一行一个不包含空格的字符串s。 输出 输出s中最长回文字串的长度。 样例输入 复制 ababc 样例输出 复制 3

```python def longest_palindrome(s): n = len(s) if n < 2: return n # dp[i][j] 表示 s[i:j+1] 是否为回文 dp = [[False] * n for _ in range(n)] max_len = 1 # 所有长度为 1 的子串都是回文 for i in range(n): dp[i][i] = True # 检查长度为 2 的子串 for i in range(n - 1): if s[i] == s[i + 1]: dp[i][i + 1] = True max_len = 2 # 检查长度大于 2 的子串 for length in range(3, n + 1): for i in range(n - length + 1): j = i + length - 1 # 状态转移:两端字符相同,且内部子串是回文 if s[i] == s[j] and dp[i + 1][j - 1]: dp[i][j] = True max_len = length return max_len # 读取输入 s = input().strip() # 输出最长回文子串的长度 print(longest_palindrome(s)) ``` [2025-12-18 18:03:51 | AI问答 | 287点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多