版权声明:小明酱私有,私自转载要捶你小胸口哦~ 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