給定乙個字串 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 我們...