[字符串]leetcode87:扰乱字符串(hard)

题目:

87. 扰乱字符串

题解:

  • 本题就使用全局搜索,暂时也没有更好的解法。

代码如下:

class Solution {
public:
    bool isScramble(string s1, string s2) {
        if(s1==s2)return true;
        int n=s1.size();
        int memo[26];
        memset(memo,0,sizeof(memo));
        for(int i=0;i<n;++i){
            memo[s1[i]-'a']++;
            memo[s2[i]-'a']--;
        }
        for(int i=0;i<26;++i){
            if(memo[i]!=0)return false;
        }
        for(int i=1;i<n;++i){
            //s1的前部分->s2的前部分,s1的后部分->s2的后部分
            if(isScramble(s1.substr(0,i),s2.substr(0,i))&&isScramble(s1.substr(i),s2.substr(i))){
                return true;
            }
            //s1的前部分->s2的后部分,s1的后部分->s2的前部分
            if(isScramble(s1.substr(0,i), s2.substr(n-i))&&isScramble(s1.substr(i), s2.substr(0, n-i))){
                return true;
            }
        }
        return false;
    }
};
发布了484 篇原创文章 · 获赞 149 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_43152052/article/details/103788959