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;
        }
    };
  • 相关阅读:
    c# 获取某个对象的[公有属性]的名称,类型,值
    iis10 HTTP 错误 500.19
    MVC 使用EF Code First数据迁移之添加字段
    emeditor 配置教程
    独立程序员如何赚钱致富
    win7/win8通过媒体流(DLNA技术)共享音乐照片和视频
    sails中文文档地址
    游戏碰撞的原理
    Android图片圆角效果
    Android 系统 root 破解原理分析 (续)
  • 原文地址:https://www.cnblogs.com/erictanghu/p/3759537.html
Copyright © 2011-2022 走看看