LeetCode - 079--単語検索(パイソン)

単語がグリッドに存在するかどうかを調べるために、二次元のグリッドと言葉を与えられました。

単語、隣接するセル内の文字のアルファベット順に構成する必要があり、水平方向または垂直方向に隣接するセルに隣接している「隣接」セル。同じセル内の文字を再利用することを許可されていません。

例:

ボード=
[
[ 'A'、 'B'、 'C'、 'E']、
[ 'S'、 'F'、 'C'、 'S']、
[ 'A'、 'D'、E ' 」、 'E']
]

与えられた単語= "ABCCEDは"、trueを返します。
単語= "SEE"を考えると、trueを返します。
単語= "ABCB"を考えると、falseを返します。

 

1  クラスの解決策:
 2               (X-1、Y)
3      (X、Y-1)(x、y)と(X、Y + 1)
4               (X + 1、Y)
5つの      方向=を(0、 -1)、( - 1,0)、(0,1)、(1 、0)]
 6      DEF存在(自己、ボード:リスト[リスト[STR]、単語:STR) - > BOOL:
 7          M = (基板)lenを
 8          であれば、m個の== 0
 9              リターン10          N = LEN(ボード[0])
 11          
12          = [[FALSEマーク _ 範囲(N)] のため_ レンジ(M)]
 13である         #1 スクラッチから各グリッドの検索
14          のための I におけるレンジ(M):
 15              用の J レンジ(N):
 16                  IF自己。__Search_word (ボード、ワード、0、I、J 、マーク、M、N-)
 。17                      リターン18が         戻り19。     DEFの  __search_word (セルフ、ボード、ワード、指数、start_x、start_y、マーク、M、N-):
 20          再帰終了条件書き込む
21は、         IFインデックス== LEN (ワード)-1 22であり、             リターンボード[start_x] [start_y] ==Wordの[インデックス]
 23          試合の途中、探し続けるために
24          IFボードは、[start_x] [start_y] == Wordの[インデックス]:
 25              この位置を占めるように、検索が失敗し、その後、解放する
26              [start_x] [マークをstart_y] = Trueの
 27              のための方向self.directions:
 28                  新しいx + = start_x 方位[0]
 29                  。new_yのstart_y +方向= [1 ]
 30                  #注:検索語が成功した場合、戻り
31は                 IF 0 <=新しいx <M 及び 0 <= new_y <N- 及び ません [新しいx] [new_y]マークそして、自己。__search_word(ボード、ワード、指数+ 1 、新しいx、new_y、マークされた、M、N):
 32                      リターン33              マーク[start_x] [start_y] = 34          リターン

 

おすすめ

転載: www.cnblogs.com/NPC-assange/p/11462898.html