File tree Expand file tree Collapse file tree 3 files changed +106
-0
lines changed
solution/0000-0099/0087.Scramble String Expand file tree Collapse file tree 3 files changed +106
-0
lines changed Original file line number Diff line number Diff line change @@ -149,6 +149,43 @@ class Solution {
149
149
}
150
150
```
151
151
152
+ ### ** Go**
153
+
154
+ ``` go
155
+ func isScramble (s1 string , s2 string ) bool {
156
+ n := len (s1)
157
+ dp := make ([][][]bool , n+1 )
158
+ for i := range dp {
159
+ dp[i] = make ([][]bool , n)
160
+ for j := range dp[i] {
161
+ dp[i][j] = make ([]bool , n+1 )
162
+ }
163
+ }
164
+ for i := 0 ; i < n; i++ {
165
+ for j := 0 ; j < n; j++ {
166
+ dp[i][j][1 ] = s1[i] == s2[j]
167
+ }
168
+ }
169
+ for l := 2 ; l < n+1 ; l++ {
170
+ for i1 := 0 ; i1 < n-l+1 ; i1++ {
171
+ for i2 := 0 ; i2 < n-l+1 ; i2++ {
172
+ for i := 1 ; i < l; i++ {
173
+ if dp[i1][i2][i] && dp[i1+i][i2+i][l-i] {
174
+ dp[i1][i2][l] = true
175
+ break
176
+ }
177
+ if dp[i1][i2+l-i][i] && dp[i1+i][i2][l-i] {
178
+ dp[i1][i2][l] = true
179
+ break
180
+ }
181
+ }
182
+ }
183
+ }
184
+ }
185
+ return dp[0 ][0 ][n]
186
+ }
187
+ ```
188
+
152
189
### ** ...**
153
190
154
191
```
Original file line number Diff line number Diff line change @@ -119,6 +119,43 @@ class Solution {
119
119
}
120
120
```
121
121
122
+ ### ** Go**
123
+
124
+ ``` go
125
+ func isScramble (s1 string , s2 string ) bool {
126
+ n := len (s1)
127
+ dp := make ([][][]bool , n+1 )
128
+ for i := range dp {
129
+ dp[i] = make ([][]bool , n)
130
+ for j := range dp[i] {
131
+ dp[i][j] = make ([]bool , n+1 )
132
+ }
133
+ }
134
+ for i := 0 ; i < n; i++ {
135
+ for j := 0 ; j < n; j++ {
136
+ dp[i][j][1 ] = s1[i] == s2[j]
137
+ }
138
+ }
139
+ for l := 2 ; l < n+1 ; l++ {
140
+ for i1 := 0 ; i1 < n-l+1 ; i1++ {
141
+ for i2 := 0 ; i2 < n-l+1 ; i2++ {
142
+ for i := 1 ; i < l; i++ {
143
+ if dp[i1][i2][i] && dp[i1+i][i2+i][l-i] {
144
+ dp[i1][i2][l] = true
145
+ break
146
+ }
147
+ if dp[i1][i2+l-i][i] && dp[i1+i][i2][l-i] {
148
+ dp[i1][i2][l] = true
149
+ break
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ return dp[0 ][0 ][n]
156
+ }
157
+ ```
158
+
122
159
### ** ...**
123
160
124
161
```
Original file line number Diff line number Diff line change
1
+ func isScramble (s1 string , s2 string ) bool {
2
+ n := len (s1 )
3
+ dp := make ([][][]bool , n + 1 )
4
+ for i := range dp {
5
+ dp [i ] = make ([][]bool , n )
6
+ for j := range dp [i ] {
7
+ dp [i ][j ] = make ([]bool , n + 1 )
8
+ }
9
+ }
10
+ for i := 0 ; i < n ; i ++ {
11
+ for j := 0 ; j < n ; j ++ {
12
+ dp [i ][j ][1 ] = s1 [i ] == s2 [j ]
13
+ }
14
+ }
15
+ for l := 2 ; l < n + 1 ; l ++ {
16
+ for i1 := 0 ; i1 < n - l + 1 ; i1 ++ {
17
+ for i2 := 0 ; i2 < n - l + 1 ; i2 ++ {
18
+ for i := 1 ; i < l ; i ++ {
19
+ if dp [i1 ][i2 ][i ] && dp [i1 + i ][i2 + i ][l - i ] {
20
+ dp [i1 ][i2 ][l ] = true
21
+ break
22
+ }
23
+ if dp [i1 ][i2 + l - i ][i ] && dp [i1 + i ][i2 ][l - i ] {
24
+ dp [i1 ][i2 ][l ] = true
25
+ break
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ return dp [0 ][0 ][n ]
32
+ }
You can’t perform that action at this time.
0 commit comments