File tree Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Expand file tree Collapse file tree 1 file changed +50
-0
lines changed Original file line number Diff line number Diff line change
1
+ package leetcode
2
+
3
+ func findMinStep (board string , hand string ) int {
4
+ q := [][]string {{board , hand }}
5
+ mp := make (map [string ]bool )
6
+ minStep := 0
7
+ for len (q ) > 0 {
8
+ length := len (q )
9
+ minStep ++
10
+ for length > 0 {
11
+ length --
12
+ cur := q [0 ]
13
+ q = q [1 :]
14
+ curB , curH := cur [0 ], cur [1 ]
15
+ for i := 0 ; i < len (curB ); i ++ {
16
+ for j := 0 ; j < len (curH ); j ++ {
17
+ curB2 := del3 (curB [0 :i ] + string (curH [j ]) + curB [i :])
18
+ curH2 := curH [0 :j ] + curH [j + 1 :]
19
+ if len (curB2 ) == 0 {
20
+ return minStep
21
+ }
22
+ if _ , ok := mp [curB2 + curH2 ]; ok {
23
+ continue
24
+ }
25
+ mp [curB2 + curH2 ] = true
26
+ q = append (q , []string {curB2 , curH2 })
27
+ }
28
+ }
29
+ }
30
+ }
31
+ return - 1
32
+ }
33
+
34
+ func del3 (str string ) string {
35
+ cnt := 1
36
+ for i := 1 ; i < len (str ); i ++ {
37
+ if str [i ] == str [i - 1 ] {
38
+ cnt ++
39
+ } else {
40
+ if cnt >= 3 {
41
+ return del3 (str [0 :i - cnt ] + str [i :])
42
+ }
43
+ cnt = 1
44
+ }
45
+ }
46
+ if cnt >= 3 {
47
+ return str [0 : len (str )- cnt ]
48
+ }
49
+ return str
50
+ }
You can’t perform that action at this time.
0 commit comments