(动态规划、递归) leetcode 87. Scramble String

思路:用递归来做感觉比动态规划简单,题目让我们判断s1和s2是否是scramble string,则s1上(从左起计数)有一个长度为 i 的分割点将s1分为s1_l 和 s1_r 两段 分别与 s2的(从左起计数一个长度为i的) s2_l 和 s2_r 互为 scramble string;或者与 s2的(从右起计数一个长度为i的)s2.substr(s-i) 和 s2.substr(0, s-i) 互为 scramble string 。

1)C++ 中的 substr(pos, len) 表示从 索引为pos开始的子字符串,截取长度为len的子串,即子串的索引为[pos, pos+len) 注意是左闭右开区间; substr(pos) 表示从索引pos开始到字符串末尾的子字符串,即 [pos, size ) size为字符串长度,注意是左闭右开区间。

2)sort() 可以按字典序排列 string 类型的字符串。

3)== 可以用来判断两个字符串是否相同。

class Solution {
public:
    bool isScramble(string s1, string s2) {
        int s = s2.size();
        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 st1_l = s1.substr(0, i), st1_r = s1.substr(i);
            string st2_l = s2.substr(0, i), st2_r = s2.substr(i);
            if((isScramble(st1_l, st2_l) && isScramble(st1_r, st2_r)) || ( isScramble(st1_l, s2.substr(s-i) ) && isScramble(st1_r, s2.substr(0, s-i) ) ))
                return true;
        }
        return false;

    }
};

原文地址:https://www.cnblogs.com/Bella2017/p/11217098.html

时间: 2024-08-03 23:18:24

(动态规划、递归) leetcode 87. Scramble String的相关文章

[LeetCode] 87. Scramble String Java

题目: 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 choo

leetCode 87.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 a

[LeetCode] 87. 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 a

Leetcode 87 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 a

87. Scramble String(js)

87. 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 str

【一天一道LeetCode】#87. Scramble String

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 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 s

leetcode 之 Scramble String

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,

【leetcode】Scramble String

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,

87. Scramble String Leetcode Python

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 a