本文共 925 字,大约阅读时间需要 3 分钟。
import java.util.*;public class Solution { public boolean hasPath (char[][] matrix, String word) {// 循环多次找到首个字母的初始位置 for(int i=0;i=matrix.length||n>=matrix[0].length||vis[m][n]==true)return false;// 如果这个位置字母和字符串尾字母一样,且字符串序号就是最后一个,代表遍历完了,返回true,不在遍历 if(word.charAt(word.length()-1)==matrix[m][n]&&(k==word.length()-1))return true;// 字符串字母是序号对应字母 if(word.charAt(k)==matrix[m][n]){// 访问过了 vis[m][n]=true;// 如果上下左右有下一个字母(k+1)则继续遍历,否则访问设置为未访问(每个字母这能经过一次,没有找到下一个字母,所以其实没有访问过) if(dfs(m+1,n,vis,matrix,k+1,word)||dfs(m,n+1,vis,matrix,k+1,word)||dfs(m,n-1,vis,matrix,k+1,word)||dfs(m-1,n,vis,matrix,k+1,word)){ return true; }else{ vis[m][n]=false; return false; } }else{ //当前不是对应字母,返回false vis[m][n]=false; return false; } }}
转载地址:http://mwssi.baihongyu.com/