File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change
1
+ // 本来这道题目说是用三维DP,当场吓尿了有没有啊。。结果,发现其实很简单的递归两部分比较,就可以达到了!!最主要是
2
+ 分割了之后,进行比较,然后交换字母的,可以交叉比较!这个地方想不清楚,
3
+
4
+ class Solution {
5
+ public:
6
+ bool isScramble(string s1, string s2) {
7
+ if(s1 == s2)
8
+ return true;
9
+ if(s1.length() != s2.length())
10
+ return false;
11
+ string t1(s1),t2(s2);
12
+ sort(t1.begin(),t1.end());
13
+ sort(t2.begin(),t2.end());
14
+ if(t1 != t2)
15
+ return false;
16
+ int len = s1.length();
17
+ for(int i = 1;i < len;i++)
18
+ {
19
+ string s1left = s1.substr(0,i);
20
+ string s1right = s1.substr(i);
21
+ string s2left = s2.substr(0,i);
22
+ string s2right = s2.substr(i);
23
+ if(isScramble(s1left,s2left) && isScramble(s1right,s2right)) // dfs
24
+ return true;
25
+ s2left = s2.substr(0,len - i);
26
+ s2right = s2.substr(len - i);
27
+ if(isScramble(s1left,s2right) && isScramble(s1right,s2left)) // 交叉递归
28
+ return true;
29
+ }
30
+ return false;
31
+ }
32
+ };
You can’t perform that action at this time.
0 commit comments