递归来做,也就是s1分为s11和s12,s2分为s21和s22。
判断isScramble(s11,s21)&&isScramble(s12,s22)或者isScramble(s12,s21)&&isScramble(s11,s22)
class Solution {
public:
bool isScramble(string s1, string s2)
{
if(s1.length()!=s2.length())
return false;
if(s1==s2)
return true;
vector<int>count(26,0);
for(int i=0;i<s1.size();i++)
{
count[s1[i]-'a']++;
count[s2[i]-'a']--;
}
for(int i=0;i<s1.size();i++)
if(count[i]==0)
return false;
for(int i=1;i<=s1.size();i++)
{
if(isScramble(s1.substr(0,i),s2.substr(0,i))&&isScramble(s1.substr(i),s2.substr(i)
||isScramble(s1.substr(0,i),s2.substr(s1.size()-i))&&isScramble(s1.substr(i),s2.substr(0,s1.size()-i))
return true;
}
return false;
}
};