zoukankan      html  css  js  c++  java
  • [LeetCode]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.

    Have you been asked this question in an interview? 

    思考:递归。

    class Solution {
    public:
        bool isScramble(string s1, string s2) {
            if(s1.size()!=s2.size()) return false;
            if(s1==s2) return true;
            //if(字符不相同) return false;
            string str1=s1;sort(str1.begin(),str1.end());
            string str2=s2;sort(str2.begin(),str2.end());
            if(str1!=str2) return false;
            int len=s1.size(),i;
            for(i=1;i<len;i++)
            {
                //if(左左&&右右)||(左右&&右左) return true;
                if((isScramble(s1.substr(0,i),s2.substr(0,i))&&isScramble(s1.substr(i),s2.substr(i)))
                ||(isScramble(s1.substr(0,i),s2.substr(len-i))&&isScramble(s1.substr(i),s2.substr(0,len-i))))
                return true;
            }
            return false;
        }
    };
    

      

  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3593527.html
Copyright © 2011-2022 走看看