本文主要是介绍[Leetcode]87. Scramble String,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[[Leetcode]87. Scramble String](https://leetcode.com/problems/scramble-string/)
- 本题难度: Hard
- Topic: divide and conquere
# Description
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.
Below is one possible representation of s1 = "great"
:
great/ \gr eat/ \ / \ g r e at/ \a t
To scramble the string, we may choose any non-leaf node and swap its two children.
For example, if we choose the node "gr"
and swap its two children, it produces a scrambled string "rgeat"
.
rgeat/ \rg eat/ \ / \ r g e at/ \a t
We say that "rgeat"
is a scrambled string of "great"
.
Similarly, if we continue to swap the children of nodes "eat"
and "at"
, it produces a scrambled string "rgtae"
.
rgtae/ \rg tae/ \ / \ r g ta e/ \t a
We say that "rgtae"
is a scrambled string of "great"
.
Given two strings s1 and s2 of the same length, determine if s2 is a scrambled string of s1.
Example 1:
Input: s1 = "great", s2 = "rgeat" Output: true
Example 2:
Input: s1 = "abcde", s2 = "caebd" Output: false
# 我的代码
```python
class Solution:
def isScramble(self, s1: str, s2: str) -> bool:
l = len(s1)
if l!=len(s2):
return False
if s1 == s2:
return True
if sorted(s1)!=sorted(s2):
return False
for i in range(1,l):
if (self.isScramble(s1[:i],s2[:i]) and self.isScramble(s1[i:],s2[i:])) or (self.isScramble(s1[:i],s2[-i:]) and self.isScramble(s1[i:],s2[:-i])):
return True
return False
```
这篇关于[Leetcode]87. Scramble String的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!