动态规划-leetcode#87-扰乱字符串

class Solution {
public:
    bool isScramble(string s1, string s2) {
        if(s1.length()==0||s2.length()==0){
            if(s1.length()==0&&s2.length()==0) return true;
            else return false;
        }
        return is(s1,s2);
    }
    bool is(string s1,string s2){
        if(s1.length()!=s2.length()) return false;
        string sort_s1 = s1;
        string sort_s2 = s2;
        sort(sort_s1.begin(),sort_s1.end());
        sort(sort_s2.begin(),sort_s2.end());
        if(sort_s1!=sort_s2) return false;
        if(s1==s2) return true;
        for(int i=1;i

以上是递归来做,遍历s1每一个可以切割的位置i,分成左右两部分子串,分别递归判断,分两种情况:

(1)s1的前i个==s2的前i个 && s1的后s1.size()-i个==s2的后s2.size()-i个

(2)s1的前i个==s2的后i个 && s1的后s1.size()-i个==s2的前s2.size()-i个

动态规划的解法,贴一个别人的答案:https://zhuanlan.zhihu.com/p/57827359

你可能感兴趣的:(回溯算法,leetcode)