题目要求==判断能不能建成二叉树
1.字母都要一样
2.1 s1没被挑选,s1的前k个字符和s2的前k个字符构成扰乱字符串,s1后面的字符和s2后面的字符也构成扰乱字符串
2.2 s1被挑选,s1的前k个字符和s2的后k个字符构成扰乱字符串,s1后面的字符和s2前面的字符也构成扰乱字符串
k是1……size-1【保证左右都不为空】
class Solution {
public:
bool isScramble(string s1, string s2) {
if (s1.size() != s2.size()) return false;
int A[200] = {}, Len = s1.size();
for (auto &x : s1)
++A[x];
for (auto &x : s2)
if (--A[x] < 0) return false;
if (Len <= 3) return true;
for (int k = 1; k < Len; ++k)
if ((isScramble(string(s1, 0, k), string(s2, 0, k)) && isScramble(string(s1, k, Len), string(s2, k, Len))) ||
(isScramble(string(s1, k, Len), string(s2, 0, Len - k)) && isScramble(string(s1, 0, k), string(s2, Len - k, Len))))
return true;
return false;
}
};