131 分割回文串

2021-10-08 06:39:07 字數 958 閱讀 9835

題目鏈結

「」「與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 ...