【python/leetcode/M/87】Scramble String

版权声明:小明酱私有,私自转载要捶你小胸口哦~ https://blog.csdn.net/alicelmx/article/details/83585603

题目

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

基本思路

要判断两个字符S和T能否转化,先把它们各自分为两部分,如果S的前半部分和T的前半部分能转换,它们的后半部分也能转换,说明它们就能转换;但也有可能S的前半部分和后半部分是在最后一交换中转换回来的,也就是S的前半部分和T的后半部分能够转换,而T的前半部分和S的后半部分能够转换同样能够达到目的。

实现代码

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
        l1,l2 = list(s1),list(s2)
        l1.sort()
        l2.sort()
        if l1 != l2:
            return False
        
        length = len(s1)
        
        for i in range(1,length):
            if self.isScramble(s1[:i],s2[:i]) and self.isScramble(s1[i:],s2[i:]):
                return True
            if self.isScramble(s1[:i],s2[length-i:]) and self.isScramble(s1[i:],s2[:length-i]): 
                return True
        return False
            
        
        

猜你喜欢

转载自blog.csdn.net/alicelmx/article/details/83585603
今日推荐