zoukankan      html  css  js  c++  java
  • 136. 分割回文串

    136. 分割回文串

    中文English

    给定字符串 s, 需要将它分割成一些子串, 使得每个子串都是回文串.

    返回所有可能的分割方案.

    样例

    样例 1:

    输入: "a"
    输出: [["a"]]
    解释: 字符串里只有一个字符, 也就只有一种分割方式 (就是它本身)
    

    样例 2:

    输入: "aab"
    输出: [["aa", "b"], ["a", "a", "b"]]
    解释: 有两种分割的方式.
        1. 将 "aab" 分割成 "aa" 和 "b", 它们都是回文的.
        2. 将 "aab" 分割成 "a", "a" 和 "b", 它们全都是回文的.
    

    注意事项

    1. 不同的方案之间的顺序可以是任意的.
    2. 一种分割方案中的每个子串都必须是 s 中连续的一段.
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param: s: A string
        @return: A list of lists of string
        """
        def partition(self, ss):
            if not ss:return None
    
            #初始条件
            dp = [[] for _ in range(len(ss))]
            dp[0] = [[ss[0]]]
    
            #计算顺序
            for i in range(1,len(ss)):
                for j in range(i+1):
                    s = ss[j:i] + ss[i]
            
                    
                    #边界情况
                    if s == s[::-1]:
                        if j == 0:
                            dp[i].append([ss[:i+1]])
                            continue
    
                        for dic in dp[j-1]:
                            append_dic = dic + [s]
                            dp[i].append(append_dic)
            return dp[-1]
  • 相关阅读:
    csp-s模拟103
    csp-s模拟102
    csp-s模拟101
    csp-s模拟100
    csp-s模拟99
    csp-s模拟98
    csp-s模拟97
    csp-s模拟96
    csp-s模拟95
    csp-s模拟94
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12993375.html
Copyright © 2011-2022 走看看