79 單詞搜尋

2021-10-01 16:47:49 字數 2360 閱讀 4576

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。

單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中「相鄰」單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。

board =[[

'a',

'b',

'c',

'e'],[

's',

'f',

'c',

's'],[

'a',

'd',

'e',

'e']

]給定 word =

"abcced"

, 返回 true.

給定 word =

"see"

, 返回 true.

給定 word =

"abcb"

, 返回 false.

思路倒是很簡單。用dfs找出來符合條件的即可。不過我可能是老了,竟然不會寫dfs了。真的蛋疼。

class

solution

:def

exist

(self, board, word:

str)

->

bool

: target_word = word[0]

self.height =

len(board)

self.width =

len(board[0]

) self.used =[[

false

for i in

range

(self.width)

]for i in

range

(self.height)

] flag =

false

for i in

range

(self.height)

:for j in

range

(self.width)

:if board[i]

[j]== target_word:

self.used[i]

[j]=

true

flag = self.dfs(board,i,j,word[1:

])if flag:

return flag

self.used[i]

[j]=

false

# 狀態回退

return flag

defdfs(self,board,i,j,word):if

len(word)==0

:return

true

target_search = word[0]

stack =

# 搜尋四個方向。stack暫存結果if0

not self.used[i]

[j-1

]and board[i]

[j-1

]== target_search:

(i,j-1)

)if j1and

not self.used[i]

[j+1

]and board[i]

[j+1

]== target_search:

(i,j+1)

)if0not self.used[i-1]

[j]and board[i-1]

[j]== target_search:

(i-1

,j))

if i1and

not self.used[i+1]

[j]and board[i+1]

[j]== target_search:

(i+1

,j))

for i in stack:

self.used[i[0]

][i[1]

]=true

flag = self.dfs(board,i[0]

,i[1

],word[1:

])if flag:

return flag

self.used[i[0]

][i[1]

]=false

# 狀態回退

return

false

s = solution(

)print

(s.exist([[

"c",

"a",

"a"],[

"a",

"a",

"a"],[

"b",

"c",

"d"]],

"aab"

))

79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回t...

79 單詞搜尋

不允許重複使用字母 seen 0for i in range n for j in range m for i in range m for j in range n if self.search board,word,0,i,j,seen return true return false word...

79 單詞搜尋

給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...