zoukankan      html  css  js  c++  java
  • [leetcode] 87. 扰乱字符串

    87. 扰乱字符串

    没有任何思路- -

    直接google别人的题解,大致看懂了吧

    简单的说,就是s1和s2是scramble的话,那么必然存在一个在s1上的长度l1,将s1分成s11和s12两段,同样有s21和s22.那么要么s11和s21是scramble的并且s12和s22是scramble的;要么s11和s22是scramble的并且s12和s21是scramble的。就拿题目中的例子 rgeat 和 great 来说,rgeat 可分成 rg 和 eat 两段, great 可分成 gr 和 eat 两段,rg 和 gr 是scrambled的, eat 和 eat 当然是scrambled。

    class Solution {
    public:
        bool isScramble(string s1, string s2) {
            if (s1.size() != s2.size()) return false;
            if (s1 == s2) return true;
            string str1 = s1, str2 = s2;
            sort(str1.begin(), str1.end());
            sort(str2.begin(), str2.end());
            if (str1 != str2) return false;
            for (int i = 1; i < s1.size(); ++i) {
                string s11 = s1.substr(0, i);
                string s12 = s1.substr(i);
                string s21 = s2.substr(0, i);
                string s22 = s2.substr(i);
                if (isScramble(s11, s21) && isScramble(s12, s22)) return true;
                s21 = s2.substr(s1.size() - i);
                s22 = s2.substr(0, s1.size() - i);
                if (isScramble(s11, s21) && isScramble(s12, s22)) return true;
            }
            return false;
        }
    };
    

    参考:Scramble String 爬行字符串

  • 相关阅读:
    String方法
    多态
    观察者模式
    ArrayList和LinkList
    唐岛湾
    AForge.Net C#的操作视频,照片读写功能
    JqGrid填坑
    日常点滴
    日常点滴
    EF Core 填坑记录
  • 原文地址:https://www.cnblogs.com/acbingo/p/9410665.html
Copyright © 2011-2022 走看看