File tree 2 files changed +12
-20
lines changed
Algorithms/0079.word-search
2 files changed +12
-20
lines changed Original file line number Diff line number Diff line change @@ -24,4 +24,6 @@ word = "ABCB", -> returns false.
24
24
25
25
## 解题思路
26
26
27
+ 使用dfs
28
+
27
29
见程序注释
Original file line number Diff line number Diff line change @@ -15,34 +15,24 @@ func exist(board [][]byte, word string) bool {
15
15
return false
16
16
}
17
17
18
- delta := [][2 ]int {
19
- [2 ]int {0 , - 1 },
20
- [2 ]int {0 , 1 },
21
- [2 ]int {- 1 , 0 },
22
- [2 ]int {1 , 0 },
23
- }
24
-
25
- var dfs func (int , int , string ) bool
26
- dfs = func (r , c int , word string ) bool {
27
- if len (word ) == 0 {
18
+ var dfs func (int , int , int ) bool
19
+ dfs = func (r , c , index int ) bool {
20
+ if len (word ) == index {
28
21
return true
29
22
}
30
23
31
- if r < 0 || m <= r || c < 0 || n <= c {
32
- return false
33
- }
34
-
35
- if board [r ][c ] != word [0 ] {
24
+ if r < 0 || m <= r || c < 0 || n <= c || board [r ][c ] != word [index ] {
36
25
return false
37
26
}
38
27
39
28
temp := board [r ][c ]
40
29
board [r ][c ] = 0
41
30
42
- for _ , d := range delta {
43
- if dfs (r + d [0 ], c + d [1 ], word [1 :]) {
44
- return true
45
- }
31
+ if dfs (r - 1 , c , index + 1 ) ||
32
+ dfs (r + 1 , c , index + 1 ) ||
33
+ dfs (r , c - 1 , index + 1 ) ||
34
+ dfs (r , c + 1 , index + 1 ) {
35
+ return true
46
36
}
47
37
48
38
board [r ][c ] = temp
@@ -52,7 +42,7 @@ func exist(board [][]byte, word string) bool {
52
42
53
43
for i := 0 ; i < m ; i ++ {
54
44
for j := 0 ; j < n ; j ++ {
55
- if dfs (i , j , word ) {
45
+ if dfs (i , j , 0 ) {
56
46
return true
57
47
}
58
48
}
You can’t perform that action at this time.
0 commit comments