递归解决问题。
注意比较字符串时可以对字符串先排序后再比较,这样处理比较简单。
class Solution {
public:
bool isScramble(string s1, string s2) {
if(s1.size()!=s2.size()) return false;
if(s1==s2) return true;
string tmp1 = s1,tmp2=s2;
sort(tmp1.begin(),tmp1.end());
sort(tmp2.begin(),tmp2.end());
if(tmp1!=tmp2) return false;
int n = s1.size();
for(int i=1;i<n;++i)
{
string str11 = s1.substr(0,i);
string str12 = s1.substr(i,n-i);
string str21 = s2.substr(0,i);
string str22 = s2.substr(i,n-i);
if(isScramble(str11,str21)&&isScramble(str12,str22)) return true;
str21 = s2.substr(0,n-i);
str22 = s2.substr(n-i,i);
if(isScramble(str11,str22)&&isScramble(str12,str21)) return true;
}
return false;
}
};