Leetcode 79. 单词搜索

思路 还是回溯
func exist(board [][]byte, word string) bool {
if len(board) < 1 || len(board[0]) > 6 || len(word) > 15 || len(word) < 1 {
return false
}
var backTracking func(board [][]byte, x, y int, wordIndex int, temp string) bool
backTracking = func(board [][]byte, x, y int, wordIndex int, temp string) bool {
if wordIndex == len(word) {
if temp == word {
return true
} else {
return false
}
}
if x >= 0 && x < len(board) && y >= 0 && y < len(board[0]) && board[x][y] == byte(word[wordIndex]) {
temp = temp + string(board[x][y])
board[x][y] += 100
res1 := backTracking(board, x+1, y, wordIndex+1, temp)
res2 := backTracking(board, x-1, y, wordIndex+1, temp)
res3 := backTracking(board, x, y+1, wordIndex+1, temp)
res4 := backTracking(board, x, y-1, wordIndex+1, temp)
board[x][y] -= 100
return res1 || res2 || res3 || res4
}
return false
}
for i := 0; i < len(board); i++ {
for j := 0; j < len(board[0]); j++ {
if board[i][j] == word[0] {
if backTracking(board, i, j, 0, "") {
return true
}
}
}
}
return false
}

浙公网安备 33010602011771号