Word Search -- LeetCode

原题链接: http://oj.leetcode.com/problems/word-search/
这道题很容易感觉出来是图的题目,其实本质上还是做深度优先搜索。基本思路就是从某一个元素出发,往上下左右深度搜索是否有相等于word的字符串。这里注意每次从一个元素出发时要重置访问标记(也就是说虽然单次搜索字符不能重复使用,但是每次从一个新的元素出发,字符还是重新可以用的)。深度优先搜索的算法就不再重复解释了,不了解的朋友可以看看wiki - 深度优先搜索。我们知道一次搜索的复杂度是O(E+V),E是边的数量,V是顶点数量,在这个问题中他们都是O(m*n)量级的(因为一个顶点有固定上下左右四条边)。加上我们对每个顶点都要做一次搜索,所以总的时间复杂度最坏是O(m^2*n^2),空间上就是要用一个数组来记录访问情况,所以是O(m*n)。代码如下:

public boolean exist(char[][] board, String word) {
    if(word==null || word.length()==0)
        return true;
    if(board==null || board.length==0 || board[0].length==0)
        return false;
    boolean[][] used = 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(search(board,word,0,i,j,used))
                return true;
        }
    }
    return false;
}
private boolean search(char[][] board, String word, int index, int i, int j, boolean[][] used)
{
    if(index == word.length())
        return true;
    if(i<0 || j<0 || i>=board.length || j>=board[0].length || used[i][j] || board[i][j]!=word.charAt(index))
        return false;
    used[i][j] = true;
    boolean res = search(board,word,index+1,i-1,j,used)
                || search(board,word,index+1,i+1,j,used)
                || search(board,word,index+1,i,j-1,used)
                || search(board,word,index+1,i,j+1,used);
    used[i][j] = false;
    return res;
}

这道题其实还可以变一变,比如字符可以重复使用。准备的时候多联想还是比较好的,因为面试中常常会做完一道题会变一下问问,虽然经常不用重新写代码,但是想了解一下思路,有兴趣的朋友可以想想哈。

返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

作者:csdn博客 Caroline-Wendy

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索搜索
, oj
, leetcode
, 深度
, 顶点
, length
, leetcode 注册
, board
一个
leetcode、word search、tle、word search java、word break leetcode,以便于您获取更多的相关知识。

时间: 2024-12-29 15:13:23

Word Search -- LeetCode的相关文章

[LeetCode]79.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

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 us

leetcode难度及面试频率

转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Characters 3 2 string Two Pointers      

LeetCode总结【转】

转自:http://blog.csdn.net/lanxu_yy/article/details/17848219 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近完成了www.leetcode.com的online judge中151道算法题目.除各个题目有特殊巧妙的解法以外,大部分题目都是经典的算法或者数据结构,因此做了如下小结,具体的解题思路可以搜索我的博客:LeetCode题解 题目 算法 数据结构 注意事项 Clone Graph BFS 哈希表 Word Ladder II

LeetCode All in One 题目讲解汇总(持续更新中...)

终于将LeetCode的免费题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~ 如果各位看官们,大神们发现了任何错误,或是代码无法通过OJ,或是有更好的解法,或是有任何疑问,意见和建议的话,请一定要在对应的帖子下面评论区留言告知博主啊,多谢多谢,祝大家刷得愉快,刷得精彩,刷出美好未来- 博主制作了一款iOS的应用"Leetcode Meet Me",里面有Leetcode上所有的题目,并且贴上了博主的解法,随时随地都能

HTML 4.0 语法其他技巧

 ■ 网页配色及背景音乐 首先是网页的底色,通常是白白的,要怎么做变化呢?可以做自己的背景图片. 要注意一点,如果背景和文字颜色一样-或者颜色相近,天啊-那谁知道你在写什么呀?最好文字与背景颜色有对比,像敝人当初,网页背景是黑的,字是白的红的,就可以很明显的突显出文字.如果图片中有文字,也要尽量淡化,否则影响内容就不好啰! 内容的东西颜色要配的适宜(除非你想要有奇怪的风格),不然像背景大红大红,太刺眼了,有人会想去吗?剩下的就让您自己配配看吧! 然后是音乐,有人喜欢用bgsound标签 <bgs

包含中文字符的URL编码问题_XML/RSS

在xml应用中,经常将一些URL信息作为xml数据存储,其中URL参数有可能包含有中文字符.当使用dom对xml数据进行解析时,可以对中文字符进行编码.但如果只使用xslt来显示xml数据时(data.xml+data.xsl),发现此时的URL会出现编码错误.即使指定编码类型(encoding="gb2312"),依然会出现同样的问题.测试发现:是IE的缓存机制问题,IE仍会把新的页面(所链接的URL)的MIME内容类型默认为text/xml 解决方法:1.指定输出文档类型为xml文

java asp分析各种搜索引擎的关键字,自动识别url 中关键字的编码_其它综合

所以必须要通过编码后的关键字,例如"解析关键字编码"在google里面输入搜索,得到编码后的"%E8%A7%A3%E6%9E%90%E5%85%B3%E9%94%AE%E5%AD%97%E7%BC%96%E7%A0%81" 1.从以上地址中解析出关键字部分. 2.通过编码后的关键字获取编码时的编码名称(如:gbk,utf-8等等) 3.用URLdecode(keywords,encodeCode)来解码得到对应的关键字. 以下是java代码的实现: 复制代码 代码如

“谷歌金山词霸”换汤不换药 结果令人失望

中介交易 SEO诊断 淘宝客 云主机 技术大厅 今天下午,金山与Google(谷歌)在北京艾维克酒店联合召开新闻发布会,宣布双方的联合品牌<谷歌金山词霸>正式发布.当年还在艾维克酒店附近迷路了的说,晕死... <谷歌金山词霸>是金山与谷歌面向互联网翻译市场联合开发,适用于个人用户的免费翻译软件.软件支持中.日.英三语查询,有取词.查词.查句.全文翻译.网页翻译等功能. 词霸的容量将从原来的300余M缩小为20多M,方便用户下载,同时节省电脑空间.词霸用户也将及时获得来自互联网的丰富