leecode题目编号79 (js解答)
备注:查询时可上下左右延伸,不可斜线延伸
function exist(board: string[][], word: string): boolean {
for(var j=0;j<board.length;j++){
for(var i=0;i<board[0].length;i++){
if(helper(board,j,i,word,0)){
return true;
}
}
}
return false;
};
//此处采用深度遍历方法进行求解
function helper(board: string[][],j:number,i:number,word:string,len:number):boolean {
if(len == word.length) return true;
if(j<0 || i<0 || j > board.length-1 || i > board[0].length-1) return false;
if(board[j][i] != word.charAt(len)) return false;
board[j][i] = "*"; //暂时将目标元素置换成一个非数组内的元素,用于避免重复遍历
let res:boolean = helper(board,j+1,i,word,len+1)|| //上下左右四个方向进行遍历
helper(board,j,i+1,word,len+1)||
helper(board,j-1,i,word,len+1)||
helper(board,j,i-1,word,len+1);
board[j][i] = word.charAt(len);
return res;
}
此题在面试中遇到,要求30min中写出答案,特此记录一下,提醒自己平时加强刷题