class Solution {
public boolean hasPath(char[][] matrix, String str) {
for(int i = 0; i < matrix.length; i) {
for(int j = 0; j < matrix[0].length; j) {
if(dfs(i,j,0,str,matrix)) {
return true;
}
}
}
return false;
}
public boolean dfs(int i, int j, int num, String str, char[][] matrix) {
char tar = str.charAt(num);
if(tar != matrix[i][j]) return false;
if(num == str.length()-1) {
return true;
}
matrix[i][j] = '*';
int[] x = new int[]{0,-1,0,1};
int[] y = new int[]{-1,0,1,0};
for(int k = 0; k < x.length; k++) {
if(i+x[k] >= 0 && i+x[k] < matrix.length && j+y[k] >= 0 && j+y[k] < matrix[0].length) {
if(dfs(i+x[k],j+y[k],num+1,str,matrix)) return true;
}
}
matrix[i][j] = tar;
return false;
}
}
1.这道题是暴力搜索思路
2.
char tar = str.charAt(num);
if(tar != matrix[i][j]) return false;
if(num == str.length()-1) {
return true;
}
这么写的目的是为了检验[[‘A’] A 这种情况,
这块容易错写为
if(num == str.length()) {
return true;
}
char tar = str.charAt(num);
if(tar != matrix[i][j]) return false;