Python查詢分割回文串的方法數量程式
假設我們有一個字串 s,我們需要找到將字串分割成每個部分都是迴文串的方法的數量。
因此,如果輸入類似於 s = "xyyx",則輸出將為 3,因為我們有如下分割方式:["x", "yy", "x"], ["x", "y", "y", "x"], ["xyyx"]。
為了解決這個問題,我們將遵循以下步驟:
- n := s 的大小
- table := 一個大小為 n + 1 的列表,並將其填充為 0
- table[0] := 1
- 對於 i 從 0 到 n,執行:
- 對於 j 從 0 到 i - 1,執行:
- sub := s[從索引 j 到 i]
- 如果 sub 是迴文串,則:
- table[i] := table[i] + table[j]
- 對於 j 從 0 到 i - 1,執行:
- 返回 table 的最後一個元素
讓我們看看下面的實現來更好地理解。
示例
class Solution: def solve(self, s): n = len(s) table = [1] + [0] * n for i in range(n + 1): for j in range(i): sub = s[j:i] if sub == sub[::-1]: table[i] += table[j] return table[-1] ob = Solution() s = "xyyx" print(ob.solve(s))
輸入
"xyyx"
輸出
3
廣告