单词搜索

题目链接

题目思路

先判断第一个是否相等 然后传进dfs函数对四个方向进行判断

go 解法

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
var flag, m, n int
var dx = []int{1, 0, -1, 0}
var dy = []int{0, 1, 0, -1}

func dfs(board [][]byte, tx, ty int, word string) {

if len(word) == 0 {
flag = 1
return
}
if flag == 1 || tx < 0 || ty < 0 || tx >= m || ty >= n {
return
}
if board[tx][ty] != word[0] {
return
}
tmp := board[tx][ty]
board[tx][ty] = '.'
for i := 0; i < 4; i++ {
dfs(board, tx+dx[i], ty+dy[i], word[1:])
}
board[tx][ty] = tmp
}
func exist(board [][]byte, word string) bool {
flag=0
m = len(board)
if m == 0 {
return false
}
n = len(board[0])
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if board[i][j] == word[0] {
dfs(board, i, j, word)
}
if flag == 1 {
return true
}
}
}
return false
}