本题考查网格上的 DFS / 回溯:在 m×n 的字符矩阵中,统计与字符串 word 完全匹配的四连通路径条数。同一条路径中每个格子只能用一次。
暴力枚举所有长度为 ∣word∣ 的格子序列是指数级的,但网格很小(m,n≤10),从每个可能起点做深度优先搜索即可。关键观察:
给定一个 m×n 的二维字符网格 board 和一个字符串单词 word。
请计算单词 word 在网格中出现的总次数。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个搜索路径中不允许被重复使用。
board:二维字符列表,每个元素为大写英文字母,1≤m,n≤10。word:字符串,由大写英文字母组成,1≤len(word)≤100。输入
[["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]],"ABCCED"
输出
1
说明
解释:路径仅如下(仅一条):
A→B→C→C→E→D
(0,0)→(0,1)→(0,2)→(1,2)→(2,2)→(2,1)
输入
[["A","A"]],"A"
输出
2
说明
解释:网格中有两个 'A',每个都可以独立构成单词 "A",共 2 条路径。
输入
[["A","B"],["C","D"]],"ABCD"
输出
0
说明
解释:由于单词必须通过水平相邻或垂直相邻的单元格构成,导致 'B' 无法直接与 'C' 构成单词,所以网格中不存在 "ABCD" 的单词路径。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册