zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):087-Scramble String

    题目来源:

      https://leetcode.com/problems/scramble-string/


    题意分析:

      给定一个字符串,字符串展成一个二叉树,如果二叉树某个或多个左右子树颠倒得到的新字符串称为scramble。给两个字符串,判断是否互为scramble。


    题目思路:

      这是一个动态规划问题,把其中字符拆成两部分,如果这两部分满足是scramble,那么整个字符串就满足scramble。


    代码(python):

      

    class Solution(object):
        def isScramble(self, s1, s2):
            """
            :type s1: str
            :type s2: str
            :rtype: bool
            """
            if len(s1) != len(s2):
                return False
            if s1 == s2:
                return True
            tmp1,tmp2 = list(s1),list(s2)
            tmp1.sort();tmp2.sort()
            if tmp1 != tmp2:
                return False
            size = len(s1)
            for i in range(1,size):
                if self.isScramble(s1[i:],s2[i:]) and self.isScramble(s1[:i],s2[:i]):
                    return True
                if self.isScramble(s1[i:],s2[:size - i]) and self.isScramble(s1[:i],s2[size - i:]):
                    return True
            return False
    View Code
  • 相关阅读:
    序列
    笔算开方法
    笔算开方法
    【AFO】闷声发大财
    P1092 虫食算[搜索]
    数据结构总结
    P1486 [NOI2004]郁闷的出纳员[权值线段树]
    P1850 换教室[dp+期望]
    P4281 [AHOI2008]紧急集合 / 聚会[LCA]
    P5021 赛道修建[贪心+二分]
  • 原文地址:https://www.cnblogs.com/chruny/p/5214315.html
Copyright © 2011-2022 走看看