思路:暴力搜索
对于串s1,s2来说。枚举长度为i的子串,将s1,s2都分为两部分。有以下两种情况
1. s1[0:i] 可以转为s2[n-i-1:n-1] 。s1[i,n-i]可以转为s2[0,n-i]
2. s1[0:i]可以转为s2[0,i] 。 s1[i,n-i]可以转为s2[i,n-i].
class Solution {
public:
bool isScramble(string s1, string s2) {
if(s1.size()!=s2.size()) return false;
if(s1==s2) return true;
string ss1=s1;
string ss2=s2;
sort(ss1.begin(),ss1.end());
sort(ss2.begin(),ss2.end());
if(ss2!=ss1) return false;
int n=ss1.size();
for(int i=1;i<n;i++)
{
if(isScramble(s1.substr(0,i),s2.substr(n-i,i))&&isScramble(s1.substr(i,n-i),s2.substr(0,n-i))){
return true;
}
if(isScramble(s1.substr(0,i),s2.substr(0,i))&&isScramble(s1.substr(i,n-i),s2.substr(i,n-i))){
return true;
}
}
return false;
}
};