Skip to content

Commit 953d1a7

Browse files
committed
递归,交叉比较
1 parent df7835e commit 953d1a7

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

DFS/Scramble String

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
};

0 commit comments

Comments
 (0)