本文为剑指 offer 系列第六十二篇。
主要知识点为数组,在矩阵中查找对应的字符串序列,类似于走迷宫或者找包围区间的题目。
题目描述
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。
解题思路
遍历矩阵中的每个结点作为起始结点,然后从这个点开始向四周遍历,寻找字符串的下一个字符,如果字符串匹配到最后的结束标志’\0’,那就返回true,反之就返回false.
需要注意的一点是之前访问过的就不能访问了,所以需要找一个数组或者矩阵来标志这个节点之前是否已经访问过。
解题代码
1 | class Solution { |
时间复杂度为O(rows*cols*logn),空间复杂度为O(rows*cols)
以上,本题结束!