Word Search

来源:互联网 发布:自动编程软件 编辑:程序博客网 时间:2024/06/11 22:19

Given a 2D board and a word, find if the word exists in the grid.
这里写图片描述
题意很简单,给你一个二维字母的数组,可以上下左右走,查找是否某个单词是否存在。同一位置的字母不可以被使用多次。

代码

public class Solution {    static boolean[][] visited;    public boolean exist(char[][] board, String word) {        visited = new boolean[board.length][board[0].length];        for(int i = 0; i < board.length; i++){            for(int j = 0; j < board[i].length; j++){                if((word.charAt(0) == board[i][j]) && search(board, word, i, j, 0)){                    return true;                }            }        }        return false;    }    private boolean search(char[][]board, String word, int i, int j, int index){        if(index == word.length()){  //当相等时表示word字符串已经全部查找完,全部找到返回true             return true;        }        if(i >= board.length || i < 0 || j >= board[i].length || j < 0 || board[i][j] != word.charAt(index) || visited[i][j]){            return false;        }        visited[i][j] = true;        if(search(board, word, i-1, j, index+1) || //有一个能找到即为真           search(board, word, i+1, j, index+1) ||           search(board, word, i, j-1, index+1) ||            search(board, word, i, j+1, index+1)){            return true;        }        visited[i][j] = false;        return false;    }}
0 0
原创粉丝点击