逆向最长匹配方法代码
时间: 2024-10-08 21:01:16 浏览: 27
逆向最长匹配算法的实现
4星 · 用户满意度95%
逆向最长匹配(Reverse String Matching),也称为Manacher's Algorithm,是一种用于高效查找字符串中回文子串的算法。它通过预处理字符串,并利用对称性和中心扩展的思想,避免了常规方法中的重复计算,时间复杂度可以达到线性O(n)。
下面是一个简单的Python版本的逆向最长匹配算法:
```python
def longest_palindrome(s):
if not s:
return []
t = '#' + '#'.join(s) + '#'
n = len(t)
p = [0] * n
center = right = max_len = 0
for i in range(1, n - 1):
if i < right:
p[i] = min(right - i, p[2 * center - i])
while i - p[i] - 1 >= 0 and i + p[i] + 1 < n and t[i - p[i] - 1] == t[i + p[i] + 1]:
p[i] += 1
if i + p[i] > right:
center, right = i, i + p[i]
result = []
for i in range(len(p)):
if p[i] > max_len // 2:
result.append(s[(i - max_len // 2): (i + max_len // 2)])
return result
```
这个函数会返回给定字符串s中最长的回文子串列表。
阅读全文