題目鏈結
「」「與93題 恢復ip位址思路一致」""
給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。
返回 s 所有可能的分割方案。
示例:輸入: 「aab」
輸出:[
[「aa」,「b」],
[「a」,「a」,「b」]
]
class solution(object):
def partition(self, s):
""":type s: str
:rtype: list[list[str]]
"""ans = list()
if s == '':
return ans
tmp = list()
self.helper(s, tmp, ans)
return ans
def helper(self, s, tmp, ans):
if len(s) == 0:
return
for i in range(len(s)):
cur = s[:i + 1]
if self.valid(cur):
self.helper(s[i + 1:], tmp, ans)
tmp.pop()
def valid(self, s):
"""注意right是閉區間,所以是len(s) - 1
"""left, right = 0, len(s) - 1
# 注意 left == right 的情況下,沒有參與到while迴圈中,但是中間那個元素不影響回文字串的判別
while left < right:
if s[left] != s[right]:
return false
left += 1
right -= 1
return true
131分割回文串
回溯 res tmp def ispalindrome self,s str 判斷是否是回文串 return s s 1 def dfs self,s str param s param index 初始為0 return if 0 len s 遞迴終止條件,在res中儲存tmp的複製值 tmp.c...
131 分割回文串 M
給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 分析 一種基礎方案是單個字元作為乙個子串 剩下的構造,只需進行合併操作即可。但這種自底向上的方案,並不好確定組合。那直接進行劃分怎麼樣?以aab為例,aab ...
力扣131 分割回文串
題目 給定乙個字串 s,將 s 分割成一些子串,使每個子串都是回文串。返回 s 所有可能的分割方案。示例 輸入 aab 輸出 aa b a a b 分析 有點向之前求所有子串問題,採用dp動態規劃演算法,只是多加上了判斷是否為回文串,在 aab 一例中可以依次分析如下分割是否滿足回文串特性 a a ...