class(object): defisScramble(self, s1, s2): """ :type s1: str :type s2: str :rtype: bool """ if len(s1) != len(s2): returnFalse n = len(s1) dp = [[[False] * n for i in xrange(n)] for j in xrange(n + 1)] for i in xrange(n): for j in xrange(n): dp[1][i][j] = s1[i] == s2[j]
for z in xrange(1, n + 1): for i in xrange(n - z + 1): for j in xrange(n - z + 1): for k in xrange(1, z): if (dp[k][i][j] and dp[z - k][i + k][j + k]) or (dp[k][i][j + z - k] and dp[z - k][i + k][j]): dp[z][i][j] = True break return dp[n][0][0]
class(object): defisScramble(self, s1, s2): """ :type s1: str :type s2: str :rtype: bool """ if len(s1) != len(s2): returnFalse n = len(s1) if s1 == s2: returnTrue for i in xrange(1, n): if self.isScramble(s1[:i], s2[:i]) and self.isScramble(s1[i:], s2[i:]): returnTrue if self.isScramble(s1[:i], s2[-i:]) and self.isScramble(s1[i:], s2[:-i]): returnTrue returnFalse
近期评论