博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode — word-search
阅读量:6835 次
发布时间:2019-06-26

本文共 2888 字,大约阅读时间需要 9 分钟。

import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * Source : https://oj.leetcode.com/problems/word-search/ * * * 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 = * * [ *   ["ABCE"], *   ["SFCS"], *   ["ADEE"] * ] * * word = "ABCCED", -> returns true, * word = "SEE", -> returns true, * word = "ABCB", -> returns false. * */public class WordSearch {    public boolean search (List
board, String word) { for (int i = 0; i < board.size(); i++) { for (int j = 0; j < board.get(i).length(); j++) { char ch = board.get(i).charAt(j); if (ch == word.charAt(0)) { int[][] searchedFlag = new int[board.size()][board.get(i).length()]; for (int k = 0; k < board.size(); k++) { Arrays.fill(searchedFlag[k], 0); } if (exist(board, i, j, word, 0, searchedFlag)) { return true; } } } } return false; } /** * 递归就是每一次做的事情一样,所以才会自己调用自己 * 所以分析的时候可以先把一个元素做的事情列出来 * 该元素做的事情完成之后,传入下一个元素 * 恢复之前的状态 * * @param board * @param i * @param j * @param word * @param index * @param searchedFlag * @return */ public boolean exist (List
board, int i, int j, String word, int index, int[][] searchedFlag) { if (word.charAt(index) == board.get(i).charAt(j) && searchedFlag[i][j] == 0) { searchedFlag[i][j] = 1; if (index+1 == word.length()) { return true; } // 判断当前匹配字符上、右、下、左有没有匹配 if (i > 0 && exist(board, i-1, j, word, index + 1, searchedFlag) || j < board.get(i).length()-1 && exist(board, i, j+1, word, index+1, searchedFlag) || i < board.size()-1 && exist(board, i+1, j, word, index+1, searchedFlag) || j > 0 && exist(board, i, j-1, word, index+1, searchedFlag)) { return true; } searchedFlag[i][j] = 0; } return false; } public static void main(String[] args) { WordSearch wordSearch = new WordSearch(); List
list = new ArrayList
(){
{ add("ABCE"); add("SFCS"); add("ADEE"); }}; System.out.println(wordSearch.search(list, "ABCCED")); System.out.println(wordSearch.search(list, "SEE")); System.out.println(wordSearch.search(list, "ABCB")); }}

转载于:https://www.cnblogs.com/sunshine-2015/p/7741160.html

你可能感兴趣的文章
《塞洛特傳說》道具系统
查看>>
MCollective架构篇4-MCollective各种插件的部署及测试
查看>>
第五章 Python函数你知多少
查看>>
百度推出飓风算法,严厉打击恶劣采集
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(4)...
查看>>
组策略部署软件----将部署的软件分类
查看>>
系统管理员在企业中的职业定位及发展方向 连载(二)
查看>>
完美世界推穿戴式设备:能消灭“宅玩家”吗?
查看>>
关东升的《从零开始学Swift》3月9日已经上架
查看>>
IFA与“色“俱进,三星“量子点+曲面”如何掀起新变革?
查看>>
2013年4月工作小结 -- 穿越前的回眸
查看>>
用什么样的个人笔记类软件?OneNote、EverNote(印象笔记)、为知笔记、麦库记事、有道云笔记……...
查看>>
Photoshop制作一只可爱的卡通小鸟
查看>>
管理不能太重原则
查看>>
在安装完成oracle的时候,需要su - oracle,但有时候出现ulimit pize...
查看>>
Hadoop系列之六:分布式文件系统HDFS
查看>>
【VMCloud云平台】SCAP(四)连接公有云(一)
查看>>
第十一集VLAN原理和VTP协议理论讲解
查看>>
做网络主播心得
查看>>
Office Web Apps证书的申请步骤讲解
查看>>