美文网首页
leetcode131 分割回文串 golang

leetcode131 分割回文串 golang

作者: lucasgao | 来源:发表于2021-03-07 18:09 被阅读0次

131. 分割回文串

解题思路

利用动态规划,遍历所有可能的字符串,标记其是否是回文字符串。

然后利用回溯(dfs)进行,依次查找,并记录过程中所有可能的字符串。最红输出即可。

注意,这里的 dp[i][j]的定义是和字符串s[i:j] 保持一致的:前闭后开。

代码

var ans [][]string
func partition(s string) [][]string {
    dp := make([][]bool,len(s))
    for i:=range dp{
        dp[i]=make([]bool,len(s)+1)
        dp[i][i+1]=true
        dp[i][i]=true
    }
    for l := 2;l<=len(s);l++{
        for i:=0;i+l<=len(s);i++{
            j:=i+l
            dp[i][j]= (s[i]==s[j-1])&&dp[i+1][j-1]
        }
    }


    ans = make([][]string,0,16)
    
    dfs(s,0,nil,dp)
    return ans
    
}

func dfs(s string,i int,list []string,dp [][]bool){
    if i == len(s){
        ans = append(ans, append([]string{}, list...))
        return
    }
    for j:=i+1;j<=len(s);j++{
        if dp[i][j]{
            dfs(s,j,append(list,s[i:j]),dp)
        }
    }
    return
}

相关文章

  • leetcode131 分割回文串 golang

    131. 分割回文串[https://leetcode-cn.com/problems/palindrome-pa...

  • leetcode131 分割回文串

    题目 分割回文串 分析 简单dfs问题,关键点在于如何快速的判断回文串。这里我们就可以预先找出所有的回文串,再每次...

  • LeetCode-131-分割回文串

    LeetCode-131-分割回文串 131. 分割回文串[https://leetcode-cn.com/pro...

  • Leetcode131: 分割回文字符串

    【题目描述】给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回 s 所有可能的分割方案。 【...

  • lintcode-分割回文串

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

  • 131. 分割回文串

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

  • LeetCode-131-分割回文串

    分割回文串 题目描述:给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能...

  • LeetCode 131. 分割回文串

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

  • LeetCode 131 [Palindrome Partiti

    原题 给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。返回s所有可能的回文串分割方案。 样例给出 s ...

  • LeetCode #1278 Palindrome Partit

    1278 Palindrome Partitioning III 分割回文串 III Description: Y...

网友评论

      本文标题:leetcode131 分割回文串 golang

      本文链接:https://www.haomeiwen.com/subject/loyyqltx.html