剑指 Offer 12. 矩阵中的路径
使用了深度优先搜索算法,注意迭代器的使用
小知识点:
//字符串转数组
String word = "hhh";
char[] words = word.toCharArray();
//字符数组转字符串
char[] arr = { 'a', 'b', 'c' };
String s = String.copyValueOf(arr);
学到的技巧:
这玩意应该表示空字符,可以防止重复使用变量中的值
// 访问过的标记空字符串,“ ”是空格, '\0'是空字符串
// 比如当前为A,没有标记找过,且A是word中对应元素,则此时应该找A下一个元素,假设是B
//在dfs(B)的时候还是要搜索B左边的元素(假设A在B左边),所以就是ABA(凭空多出一个A,A用了2次,不可以
//如果标记为空字符串就不会有这样的问题,因为他们值不相等AB != ABA。
board[i][j] = '\0';
在做题过程中出现的问题:
//在这个判断语句中出现错误
if(|| board[i][j]!=words[k] || i>=board.length || i<0 || j>=board[0].length || j<0 ) return false;
//正确写法
if(i>=board.length || i<0 || j>=board[0].length || j<0 || board[i][j]!=words[k]) return false;
就是要注意判断的语句中也有先后顺序,如果先判断board数组元素时会报溢出错误