当前位置: 首页 > 后端技术 > Java

JZ-065-APathinaMatrix

时间:2023-04-01 23:55:57 Java

APathinaMatrixTitleDescription请设计一个函数,判断矩阵中是否存在包含某个字符串的所有字符的路径。路径可以从矩阵中的任意一个格子开始,每走一步可以在矩阵中向左、右、上、下移动一个格子。如果一条路径穿过矩阵中的一个格子,则该路径不能再次进入该格子。例如,abcesfcsadee矩阵包含字符串“bcced”的路径,但矩阵不包含“abcb”的路径,因为字符串的第一个字符b占据了矩阵之后的第一行第二格,路径不能再次进入格子。题目链接:PathCodeinMatrix/***Title:PathinMatrix*题目描述*请设计一个函数,判断矩阵中是否存在包含字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每走一步可以在矩阵中左右移动一个格子。如果一条路径穿过矩阵中的一个格子,则该路径不能再次进入该格子。例如*abce*sfcs*adee*矩阵包含字符串“bcced”的路径,但矩阵不包含“abcb”的路径,因为字符串的第一个字符b占据了矩阵的第一行并且第二个单元格之后,路径不能*再次进入那个单元格。*题目链接:*https://www.nowcoder.com/practice/c61c6999eecb4b8f88a98f66b273a3cc?tpId=13&&tqId=11218&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking*/publicclassJz65{privatefinalstaticint[][]next={{0,-1},{0,1},{-1,0},{1,0}};私有整数行;私人int列;/***返回法**@parammatrix*@paramrows*@paramcols*@paramstr*@return*/publicbooleanhasPath(char[]matrix,introws,intcols,char[]str){if(行==0||列==0){返回假;}this.rows=行;this.cols=cols;布尔[][]标记=新布尔[行][列];char[][]array=buildMatrix(矩阵);for(inti=0;i=rows||c<0||c>=cols||matrix[r][c]!=str[pathLen]||marked[r][c]){返回错误的;}标记[r][c]=true;for(int[]n:next){if(backtracking(matrix,str,marked,pathLen+1,r+n[0],c+n[1])){返回真;}}标记[r][c]=false;返回假;}privatechar[][]buildMatrix(char[]array){char[][]matrix=newchar[rows][cols];for(intr=0,idx=0;r