查找给定字符串的所有回文子字符串 - Python 中的集合 2
server side programmingprogrammingpython
假设我们有一个字符串;我们必须从该字符串中找出所有回文子字符串。这里 aa 和 aa 被视为两个子字符串,而不是一个。
因此,如果输入是 redivider,则输出将是 ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']
为了解决这个问题,我们将遵循以下步骤 −
- v := a new list
- pos := 0.0
- 当 pos < s 的大小时,执行
- rad := pos - (pos 为整数)
- 当 (pos + rad) < s 的大小且 (pos - rad) >= 0 且 (s[(pos - rad) 的整数] 与 s[(pos + rad) 的整数] 相同时,执行
- 在 v 末尾插入 s[从 (pos - rad) 的索引整数到 (pos + rad + 1) 的整数]
- rad := rad + 1
- pos := pos + 0.5
- 返回 v
示例代码
让我们看看下面的实现以便更好地理解 −
def get_all_pal_sub(s): v = [] pos = 0.0 while pos < len(s): rad = pos - int(pos) while ((pos + rad) < len(s) and (pos - rad) >= 0 and (s[int(pos - rad)] == s[int(pos + rad)])): v.append(s[int(pos - rad): int(pos + rad + 1)]) rad += 1 pos += 0.5 return v v = get_all_pal_sub("redivider") print(len(v)) print(v)
输入
"redivider"
输出
13 ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']