[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