zoukankan      html  css  js  c++  java
  • [leetcode]Scramble String

    题不难,但是开始没理解意思

    用DFS就过了

    枚举从哪儿断开的

    有两种情况

    1、正常的

    2、交换了的

    result = isScramble(s1.substr(0,i) , s2.substr(0,i)) && isScramble(s1.substr(i) , s2.substr(i));

    这是正常的比较

    result = isScramble(s1.substr(0,i) , s2.substr(s1.size()-i,i)) && isScramble(s1.substr(i) , s2.substr(0 , s1.size()-i));

    这是交换了的比较

    class Solution {
    public:
        bool isScramble(string s1, string s2) {
            //first count the characters
            if(s1 == s2) return true;
            if(s1.size() != s2.size()) return false;
            int charset[26] = {0};
            for(int i = 0 ; i < s1.size() ; ++i)
              charset[s1[i]-'a']++;
            for(int i = 0 ; i < s2.size() ; ++i)
              charset[s2[i]-'a']--;
            for(int i = 0 ; i < 26 ; ++i)
              if(charset[i] != 0) return false;
            //end
            
            bool result = false;
            for(int i = 1 ; i < s1.size() ; ++i) {
                result = isScramble(s1.substr(0,i) , s2.substr(0,i)) && isScramble(s1.substr(i) , s2.substr(i));
                if(result) return true;
                result = isScramble(s1.substr(0,i) , s2.substr(s1.size()-i,i)) && isScramble(s1.substr(i) , s2.substr(0 , s1.size()-i));
                if(result) return true;
            }
            return false;
        }
    };
  • 相关阅读:
    VS工作目录,输出目录
    Google的C++开源代码项
    C++文件读写
    深拷贝浅拷贝
    Efficient Graph-Based Image Segmentation
    Graph Cut 简介
    Graph Cut
    "GrabCut" - Interactive Foreground Extraction using Iter
    EM算法
    Python图像处理库(2)
  • 原文地址:https://www.cnblogs.com/x1957/p/3525486.html
Copyright © 2011-2022 走看看