码迷,mamicode.com
首页 > 其他好文 > 详细

Scramble String

时间:2014-06-04 20:11:38      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:des   c   style   class   blog   code   

Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.

Below is one possible representation of s1 = "great":

 great / \ gr eat / \ / \ g r e at / \ a t 

To scramble the string, we may choose any non-leaf node and swap its two children.

For example, if we choose the node "gr" and swap its two children, it produces a scrambled string "rgeat".

 rgeat / \ rg eat / \ / \ r g e at / \ a t 

We say that "rgeat" is a scrambled string of "great".

Similarly, if we continue to swap the children of nodes "eat" and "at", it produces a scrambled string "rgtae".

 rgtae / \ rg tae / \ / \ r g ta e / \ t a 

We say that "rgtae" is a scrambled string of "great".

Given two strings s1 and s2 of the same length, determine if s2 is a scrambled string of s1.

bubuko.com,布布扣
class Solution {
private:
    void sort(string & s)
    {
        for(int i=0;i<s.length();i++)
            for(int j=i+1;j<s.length();j++)
                if(s[i]>s[j])
                {
                    char c=s[i];
                    s[i]=s[j];
                    s[j]=c;
                }
    }
    bool checkstr(string s1,string s2)
    {
        sort(s1);
        sort(s2);
        return s1==s2;
    }
    
public:
    bool isScramble(string s1, string s2) 
    {
        if(s1==""return s2=="";
        if(checkstr(s1,s2)==falsereturn false;
        int len=s1.length();
        if(len==1return true;
        for(int i=1;i<s1.length();i++)
        {
            string left=s1.substr(0,i);
            string right=s1.substr(i);            
            if((isScramble(left,s2.substr(0,i)) && isScramble(right,s2.substr(i)))
                || (isScramble(left,s2.substr(len-i)) && isScramble(right,s2.substr(0,len-i))))
            return true;
        }
        return false;
    }
};
bubuko.com,布布扣

Scramble String,布布扣,bubuko.com

Scramble String

标签:des   c   style   class   blog   code   

原文地址:http://www.cnblogs.com/erictanghu/p/3759537.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!