zoukankan      html  css  js  c++  java
  • Scramble String

    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.

    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;
        }
    };
  • 相关阅读:
    一幅图解决R语言绘制图例的各种问题
    新时代,建立你的数据分析思维
    新时代,建立你的数据分析思维
    聚类分析基础知识总结及实战解析
    聚类分析基础知识总结及实战解析
    js中 opener和parent的差别
    Latex中參考文献排序
    Android之——清理手机SD卡缓存
    drupal7 使用(hook_preprocess_HOOK)向各个主题模版里面传递变量
    python 正則表達式推断邮箱格式是否正确
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759537.html
Copyright © 2011-2022 走看看