leetcode 87 擾亂字串

2021-09-29 13:42:46 字數 1271 閱讀 8288

給定乙個字串 s1,我們可以把它遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。

下圖是字串 s1 = "great" 的一種可能的表示形式。

great

/    \

gr    eat

/ \    /  \

g   r  e   at

/ \a   t

在擾亂這個字串的過程中,我們可以挑選任何乙個非葉節點,然後交換它的兩個子節點。

例如,如果我們挑選非葉節點 "gr" ,交換它的兩個子節點,將會產生擾亂字串 "rgeat" 。

rgeat

/    \

rg    eat

/ \    /  \

r   g  e   at

/ \a   t

我們將 "rgeat」 稱作 "great" 的乙個擾亂字串。

同樣地,如果我們繼續交換節點 "eat" 和 "at" 的子節點,將會產生另乙個新的擾亂字串 "rgtae" 。

rgtae

/    \

rg    tae

/ \    /  \

r   g  ta  e

/ \t   a

我們將 "rgtae」 稱作 "great" 的乙個擾亂字串。

給出兩個長度相等的字串 s1 和 s2,判斷 s2 是否是 s1 的擾亂字串。

示例 1:

輸入: s1 = "great", s2 = "rgeat"

輸出: true

示例 2:

輸入: s1 = "abcde", s2 = "caebd"

輸出: false

class solution:

def isscramble(self, s1: str, s2: str) -> bool:

if s1 == s2:

return true

if sorted(s1) != sorted(s2):

return false

for i in range(1,len(s1)):

if self.isscramble(s1[:i], s2[:i]) and self.isscramble(s1[i:], s2[i:]):

return true

if self.isscramble(s1[:i], s2[-i:]) and self.isscramble(s1[i:], s2[:-i]):

return true

return false

leetcode87 擾亂字串

給定乙個字串 s1,我們可以把它遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。下圖是字串 s1 great 的一種可能的表示形式。great gr eat g r e at a t 在擾亂這個字串的過程中,我們可以挑選任何乙個非葉節點,然後交換它的兩個子節點。例如,如果我們挑選非葉節點 gr 交...

leetcode 87 擾亂字串

87.擾亂字串 沒有任何思路 直接google別人的題解,大致看懂了吧 簡單的說,就是s1和s2是scramble的話,那麼必然存在乙個在s1上的長度l1,將s1分成s11和s12兩段,同樣有s21和s22.那麼要麼s11和s21是scramble的並且s12和s22是scramble的 要麼s11...

LeetCode 87 擾亂字串 C

給定乙個字串 s1,我們可以把它遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。下圖是字串 s1 great 的一種可能的表示形式。在擾亂這個字串的過程中,我們可以挑選任何乙個非葉節點,然後交換它的兩個子節點。例如,如果我們挑選非葉節點 gr 交換它的兩個子節點,將會產生擾亂字串 rgeat 我們...