题目:
题解:
- 本题就使用全局搜索,暂时也没有更好的解法。
代码如下:
class Solution {
public:
bool isScramble(string s1, string s2) {
if(s1==s2)return true;
int n=s1.size();
int memo[26];
memset(memo,0,sizeof(memo));
for(int i=0;i<n;++i){
memo[s1[i]-'a']++;
memo[s2[i]-'a']--;
}
for(int i=0;i<26;++i){
if(memo[i]!=0)return false;
}
for(int i=1;i<n;++i){
//s1的前部分->s2的前部分,s1的后部分->s2的后部分
if(isScramble(s1.substr(0,i),s2.substr(0,i))&&isScramble(s1.substr(i),s2.substr(i))){
return true;
}
//s1的前部分->s2的后部分,s1的后部分->s2的前部分
if(isScramble(s1.substr(0,i), s2.substr(n-i))&&isScramble(s1.substr(i), s2.substr(0, n-i))){
return true;
}
}
return false;
}
};