forked from iamshubhamg/Leet-Code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScramble_Strings.java
67 lines (41 loc) · 1.41 KB
/
Scramble_Strings.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Problem Link: https://leetcode.com/problems/scramble-string/
import java.util.HashMap;
public class Scramble_Strings {
HashMap<String,Boolean> map = new HashMap();
public boolean isScramble(String s1, String s2) {
return solve(s1,s2);
}
public boolean solve(String a, String b){
if(a.length()!=b.length())
return false;
if(a.equals(b))
return true;
if(a.length()==0&&b.length()==0)
return true;
if(a.length()<=1)
return false;
String key = a+"_"+b;
if(map.containsKey(key))
return map.get(key);
int n = a.length();
boolean flag = false;
for(int i=1;i<n;i++){
if(((solve(a.substring(0,i),b.substring(0,i))==true)&&(solve(a.substring(i,n),b.substring(i,n))==true)
)||((solve(a.substring(0,i),b.substring(n-i,n))==true)&&(solve(a.substring(i,n),b.substring(0,n-i))==true))
)
{
flag=true;
break;
}
}
map.put(key,flag);
return flag;
}
public static void main(String[] args) {
String s1 = "great";
String s2 = "rgeat";
Scramble_Strings ss = new Scramble_Strings();
boolean ans = ss.isScramble(s1,s2);
System.out.println(ans);
}
}