如果一个字符串正着读和和反着读都一样,那它就是回文串。 请写一个函数,参数为一个字符串,返回这个字符串所有子串里面构成回文串的最大子串。
时间: 2024-11-22 12:39:10 浏览: 2
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
可以编写一个Python函数来解决这个问题。首先,我们需要遍历输入字符串的所有子串,并检查每个子串是否为回文串。如果是,我们就更新最大回文子串的长度和内容。以下是具体的实现:
```python
def longest_palindromic_substring(s):
n = len(s)
# 初始化最长回文子串变量
max_len = 0
start = 0
# 检查每个字符为中心的奇数长度子串
for i in range(n):
# 左边界扩展
left = right = i
while left >= 0 and right < n and s[left] == s[right]:
if right - left + 1 > max_len:
max_len = right - left + 1
start = left
left -= 1
right += 1
# 检查每个字符对为中心的偶数长度子串
for i in range(n - 1):
# 左右边界扩展
left = i
right = i + 1
while left >= 0 and right < n and s[left] == s[right]:
if right - left + 1 > max_len:
max_len = right - left + 1
start = left
left -= 1
right += 1
return s[start:start + max_len]
# 示例
s = "babad"
print(longest_palindromic_substring(s)) # 输出: "bab"
阅读全文