leetcode-分割回文串

分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

字符串i到j之间是回文则有i+1, j-1 之间是回文字符串



def f(s):
    n = len(s)
    dp = [[True]*n for _ in range(n)]

    for i in range(n-1, -1, -1):
        for j in range(i+1, n):
            dp[i][j] = (s[i] == s[j]) and dp[i+1][j-1]

    ret = []
    ans = []

    def dfs(i):
        if i == n:
            ret.append(ans[:])
            return

        for j in range(i, n):
            if dp[i][j]:
                ans.append(s[i:j+1])
                dfs(j+1)
                ans.pop()


    dfs(0)
    return ret



然后扩展最少分割次数最少

知道字符串i,j之间是否为字符串

0,i之间次数, 0,j,i ,假设知道 j ~ i是否为字符串, 0~j次数

Loading Disqus comments...
Table of Contents