Python 中查詢給定字串的所有迴文子字串 - 方法二
假設我們有一個字串;我們需要從該字串中找到所有迴文子字串。這裡 aa 和 aa 被認為是兩個子字串,而不是一個。
因此,如果輸入類似於 redivider,則輸出將為 ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']
為了解決這個問題,我們將遵循以下步驟 -
- v := 一個新的列表
- pos := 0.0
- 當 pos < s 的大小 時,執行
- rad := pos - (pos 的整數部分)
- 當 (pos + rad) < s 的大小 且 (pos - rad) >= 0 且 (s[pos - rad 的整數部分] 等於 s[pos + rad 的整數部分]) 時,執行
- 將 s[從索引 pos - rad 的整數部分 到 pos + rad + 1 的整數部分] 插入到 v 的末尾
- 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']
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP