多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > 個人記錄-LeetCode 79. Word Search

個人記錄-LeetCode 79. Word Search

來源:程序員人生   發(fā)布時間:2017-03-09 09:14:43 閱讀次數(shù):3277次

問題:
Given a 2D board and a word, find if the word exists in the grid.

The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.

For example,
Given board =

[
  ['A','B','C','E'],
  ['S','F','C','S'],
  ['A','D','E','E']
]

word = “ABCCED”, returns true,
word = “SEE”, returns true,
word = “ABCB”, returns false.

注意題干的“sequentially”, 即匹配方向是連續(xù)的,不走回頭路。
因而這個問題暴力遞歸便可。

代碼示例:

public class Solution {
    public boolean exist(char[][] board, String word) {
        if (board == null) {
            return false;
        }

        //用于記錄每一個字符是不是已匹配過
        boolean[][] bitMap = new boolean[board.length][board[0].length];

        //順次從每一個位置開始匹配
        for (int i = 0; i < board.length; ++i) {
            for (int j = 0; j < board[0].length; ++j) {
                if (existInner(board, i, j, bitMap, word, 0)) {
                    return true;
                }
            }
        }

        return false;
    }

    private boolean existInner(char[][] board, int i, int j, boolean[][] bitMap, String word, int next) {
        //匹配終了
        if (next == word.length()) {
            return true;
        }

        if (i >= board.length || i < 0 || j >= board[0].length || j < 0) {
            return false;
        }

        //不相等,或已匹配過
        if (board[i][j] != word.charAt(next) || bitMap[i][j]) {
            return false;
        }

        bitMap[i][j] = true;

        //向當前位置的4周繼續(xù)匹配
        boolean rst = existInner(board, i+1, j, bitMap, word, next+1) ||
                existInner(board, i-1, j, bitMap, word, next+1) ||
                existInner(board, i, j+1, bitMap, word, next+1) ||
                existInner(board, i, j-1, bitMap, word, next+1);

        if (!rst) {
            //需要復位
            bitMap[i][j] = false;
        }

        return rst;
    }
}
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日本特一级毛片免费视频 | 波多野结衣视频在线观看地址免费 | 欧美一区二区三区不卡 | 日韩18 | 男女最猛烈xx00动态视频 | 日本免费观看网站 | 欧美国产成人精品一区二区三区 | 国产精品任我爽爆在线播放66 | 国产成人a一区二区 | 亚洲春色另类小说 | 欧美亚洲国产精品久久久久 | 波多野结衣免费线在线 | 国产欧美视频一区二区三区 | 亚洲精品中文字幕无乱码 | 自拍偷拍1 | 国产区精品一区二区不卡中文 | 中文天堂在线视频 | 欧美videos黑人巨大 | 欧美日韩一区二区在线观看视频 | 欧美一二三区视频 | 亚洲无限乱码一二三四区 | 91在线一区二区三区 | 欧美激情久久久久久久大片 | 色www| 久久精品一区二区三区不卡 | 好看的亚洲视频 | 精品国产人成在线 | 亚洲好视频 | 成人免费的性色视频 | 在线观看亚洲 | 欧美妇乱 | 欧美a视频在线观看 | 亚洲精品国产网红在线一区 | 日韩欧美一区二区久久 | 男女爽爽无遮挡午夜视频在线观看 | 欧美日韩亚洲精品一区二区三区 | 亚洲成人娱乐网 | 波多野结衣亚洲 | 国产图区| 久久精品国产福利国产琪琪 | 香蕉伊|