暴力求解。 遍历当前string的每种二分情况,递归调用函数判断是否存在等价情况。
class Solution {
public:
bool isScramble(string s1, string s2) {
if( s1 == s2 )
{
return true;
}
int count[26] = {0};
int l = s1.length();
for( int i=0;i<l;i++ )
{
count[s1[i]-'a']++;
}
for( int j=0;j<l;j++ )
{
count[s2[j]-'a']--;
}
for( int i=0;i<26;i++ )
{
if( count[i] != 0 )
{
return false;
}
}
for( int i=1;i<l;i++ )
{
bool res = (isScramble(s1.substr(0,i),s2.substr(0,i))&&isScramble(s1.substr(i),s2.substr(i)))||(isScramble(s1.substr(0,i),s2.substr(l-i,i))&&isScramble(s1.substr(i),s2.substr(0,l-i)));
if( res == true )
{
return true;
}
}
return false;
}
};