1 题目描述
https://www.nowcoder.com/practice/2bdc44bb0186468b8d8c13ea5d3a9e58?tpId=46&&tqId=29091&rp=1&ru=/ta/classic-code&qru=/ta/classic-code/question-ranking
2 解题思路
见代码
3 代码实现
#include<unordered_map>
class Solution {
public:
bool isScramble(string s1, string s2) {
return dfs(s1, s2);
}
bool dfs(string s1, string s2){
if(s1.size() != s2.size()) return false;
if(s1 == s2) return true;
unordered_map<char, int> char2count;
for(int i = 0; i < s1.size(); i++){
++char2count[s1[i]];
--char2count[s2[i]];
}
for(auto it = char2count.begin(); it != char2count.end(); it++)
if(it->second != 0) return false;
for(int i = 1; i < s1.size(); i++){
if(dfs(s1.substr(0, i), s2.substr(0, i)) &&
dfs(s1.substr(i), s2.substr(i)))
return true;
if(dfs(s1.substr(0, i), s2.substr(s1.size() - i)) &&
dfs(s1.substr(i), s2.substr(0, s1.size() - i)))
return true;
}
return false;
}
};
4 运行结果
运行时间:5ms
占用内存:392k