zoukankan      html  css  js  c++  java
  • 79. 单词搜索

    给定一个二维网格和一个单词,找出该单词是否存在于网格中。

    单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

    示例:

    board =
    [
      ['A','B','C','E'],
      ['S','F','C','S'],
      ['A','D','E','E']
    ]
    
    给定 word = "ABCCED", 返回 true
    给定 word = "SEE", 返回 true
    给定 word = "ABCB", 返回 false

    提示:

    • board 和 word 中只包含大写和小写英文字母。
    • 1 <= board.length <= 200
    • 1 <= board[i].length <= 200
    • 1 <= word.length <= 10^3
    /**
     * @param {character[][]} board
     * @param {string} word
     * @return {boolean}
     */
    
    function DFS(board,row,col,rows,cols,word,cur){
        if(row>=rows||col>=cols||row<0||col<0)return false;
        const item=board[row][col];
        if(item!==word[cur])return false;
        if(cur+1===word.length)return true;
    
        board[row][col]=null;
    
        const res=
            DFS(board,row+1,col,rows,cols,word,cur+1)||
            DFS(board,row,col+1,rows,cols,word,cur+1)||
            DFS(board,row-1,col,rows,cols,word,cur+1)||
            DFS(board,row,col-1,rows,cols,word,cur+1);
    
        board[row][col]=item;
    
        return res;
    }
    
    var exist=function(board,word){
        if(word.length===0)return true;
        if(board.length===0)return false;
    
        const rows=board.length;
        const cols=board[0].length;
    
        for(let i=0;i<rows;i++){
            for(let j=0;j<cols;j++){
                const find=DFS(board,i,j,rows,cols,word,0);
                if(find)return true;
            }
        }
    
        return false;
    }
  • 相关阅读:
    day_01 python基础 基本数据类型 if条件
    计算多边形周长和面积
    我研究出来的属性查询,贴自己的代码,请大家指教
    配置sde
    如何编辑SDE数据库(转载)
    ArcSED连接方式
    不同窗体传递数据
    sde stuff
    ArcSED
    不显示查询问题的解决(太完美了,新建一个图层,表示查询结果)
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14315890.html
Copyright © 2011-2022 走看看