题目链接:单词搜索
题目描述:
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
题目分析:判断单词是否存在于网格中,要求单词的字母在网格中是相邻且连续的。
就需要对网格中的每一个字符和单词中的每一个字符进行一一比对:
当一个字符满足条件时,就将网格中上下左右相邻的字符和单词中的下一个字符进行比较;
当一个字符不满足条件时,就回退到上一步,更新选择。即采用回溯方法。
思路:
1)单词的首字母可能在网格的任意位置出现,所以需要对网格进行整体遍历,直到找到符合条件的单词。
2)由于单元格的相邻四个单元格会出现重复遍历,导致单词元素误判现象,需要一个二维数组作为标记,访问过的单元格不能再被访问。
3)再使用一个函数check(i,j,k),表示以board[i][j]为起点,能否在网格中找到和word中以word[k]开始的后缀字符串相同的序列