[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
原文地址:https://www.cnblogs.com/chruny/p/5214315.html