zoukankan      html  css  js  c++  java
  • Word Search

     1 public class Solution {
     2     public boolean exist(char[][] board, String word) {
     3         if(!isValidBoard(board) || word == null || word.length() == 0) {
     4             return false;
     5         }
     6         
     7         boolean[][] visitedMap = new boolean[board.length][board[0].length];
     8         for(int i = 0; i < board.length; i++) {
     9             for(int j = 0; j < board[i].length; j++) {
    10                 if(contains(board, visitedMap, word, i, j, 0)) {
    11                     return true;
    12                 }
    13             }
    14         }
    15         
    16         return false;
    17     }
    18     
    19     private boolean isValidBoard(char[][] board) {
    20         if(board == null || board.length == 0 || board[0] == null || board[0].length == 0) {
    21             return false;
    22         } else {
    23             return true;
    24         }
    25     }
    26     
    27     private boolean contains(char[][] board, boolean[][] visitedMap, String word, int i, int j, int index) {
    28         if(index >= word.length() || visitedMap[i][j] == true) {
    29             return false;
    30         } else if(index == word.length()-1 && board[i][j] == word.charAt(index)) {
    31             return true;
    32         } 
    33         
    34         if(board[i][j] == word.charAt(index)) {
    35             visitedMap[i][j] = true;
    36             
    37             // upper
    38             if(i > 0 && contains(board, visitedMap, word, i-1, j, index+1)) {
    39                 return true;
    40             }
    41             
    42             // down
    43             if(i < board.length-1 && contains(board, visitedMap, word, i+1, j, index+1)) {
    44                 return true;
    45             }
    46             
    47             // left
    48             if(j > 0 && contains(board, visitedMap, word, i, j-1, index+1)) {
    49                 return true;
    50             }
    51             
    52             // right
    53             if(j < board[i].length-1 && contains(board, visitedMap, word, i, j+1, index+1)) {
    54                 return true;
    55             }
    56             
    57             visitedMap[i][j] = false;
    58         }
    59         
    60         return false;
    61     }
    62     
    63 }
  • 相关阅读:
    layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结二
    layaAir引擎制作游戏的图集动画、时间轴动画、和骨骼动画总结一
    Flask 生成验证码 支持干扰线、噪点
    数组操作
    css_权威指南_选择符
    css权威指南_特指度
    *arg **kwargs
    一日一库—importlib
    一日一库—itertools
    FLask 流程图、上下文、上下文隔离原理
  • 原文地址:https://www.cnblogs.com/Phoenix-Fearless/p/5189833.html
Copyright © 2011-2022 走看看