题解 | #矩阵中的路径#
矩阵中的路径
https://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix char字符型二维数组
* @param word string字符串
* @return bool布尔型
*/
public boolean hasPath (char[][] matrix, String word) {
// write code here
//对二维数组进行遍历
char[] words = word.toCharArray();
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[0].length; j++){
if(traversal(i, j, matrix,words,0)){
return true;
}
}
}
return false;
}
boolean traversal(int i,int j,char[][] matrix,char[] words,int index){
//越界及不等
//index表示的是查找到字符串word的第几个字符,
//如果这个字符不等于matrix[i][j],说明验证这个坐标路径是走不通的
if(i >= matrix.length || i < 0 || j >= matrix[0].length
|| j < 0 || matrix[i][j] != words[index]){
return false;
}
//遍历完后
if(index == words.length -1){
return true;
}
//把当前坐标的值保存下来,为了在最后复原
char tmp = matrix[i][j];
//然后修改当前坐标的值
matrix[i][j] = '.';
//对数组上下左右逐个遍历
boolean res = traversal(i+1, j, matrix, words, index+1)
||traversal(i-1, j, matrix, words, index+1)
||traversal(i, j+1, matrix, words, index+1)
||traversal(i, j-1, matrix, words, index+1);
matrix[i][j] = tmp;
return res;
}
}
