87. Scramble String

class Solution(object):
    def isScramble(self, s1, s2):
        """
        :type s1: str
        :type s2: str
        :rtype: bool
        """
        if s1==s2: return True 
        l1=len(s1)
        l2=len(s2)
        d=[[[False for n in xrange(l1+1)]for j in xrange(l2)]for i in xrange(l1)]
        
        for i in xrange(l1):
            for j in xrange(l2):
                if s1[i]==s2[j]:
                    d[i][j][1]=True
        
        for n in xrange(2,l1+1):
            for i in xrange(l1-n+1):
                for j in xrange(l2-n+1):
                    for k in xrange(1,n):
                        if ((d[i][j][k] and d[i+k][j+k][n-k]) or (d[i][j+n-k][k] and d[i+k][j][n-k])):
                            d[i][j][n]=True
        return d[0][0][l1]

你可能感兴趣的:(87. Scramble String)