leetcode Word Search

原创 2015年07月07日 17:45:32

题目

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

分析

回溯法。

代码

class Solution {
public:
    bool search(vector<vector<char>>& board, vector<vector<bool>> &flag, int x, int y, string &word, int start){
        int m = board.size();
        int n = board[0].size();
        if(start == word.length())
            return true;
        if(x < 0 || x >= m || y < 0 || y >= n || flag[x][y] || word.at(start) != board[x][y])
            return false;
        flag[x][y] = true;
        bool ans = search(board, flag, x+1, y, word, start+1) ||
                    search(board, flag, x-1, y, word, start+1) ||
                    search(board, flag, x, y+1, word, start+1) ||
                    search(board, flag, x, y-1, word, start+1);
        flag[x][y] = false;
        return ans;
    }
    bool exist(vector<vector<char>>& board, string word) {
        int m = board.size();
        if(m == 0)
            return false;
        int n = board[0].size();
        vector<vector<bool> > flag(m, vector<bool> (n, false));
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                    if(search(board, flag, i, j, word, 0))
                        return true;
            }
        }
        return false;
    }
};

leetcode: Word Break 纪念又一次死在动态规划上

动态规划是算法中的一个基本的算法,但是个人感觉变化很多,有时候知道能够用,但是却想不到思路。 Given a string s and a dictionary of words dict,...
  • qinzhaokun
  • qinzhaokun
  • 2015年10月08日 15:13
  • 674

LeetCode OJ算法题(七十九):Word Search

题目: Given a 2D board and a word, find if the word exists in the grid. The word can be constr...
  • op_yu
  • op_yu
  • 2014年08月27日 14:27
  • 258

LeetCode 127 Word Ladder java (看某位大神的解法做出来的)

问题重述: Given two words (beginWord and endWord), and a dictionary’s word list, find the length of sh...
  • qq_16166139
  • qq_16166139
  • 2016年04月21日 21:50
  • 960

Leetcode 240 Search a 2D Matrix II (二分法和分治法解决有序二维数组查找)

1.问题描述  写一个高效的算法,从一个m×nm\times n的整数矩阵中查找出给定的值,矩阵具有如下特点:    每一行从左到右递增。 每一列从上到下递增。 2. 方法与思路2.1 二分查找法 ...
  • Jeanphorn
  • Jeanphorn
  • 2015年07月23日 20:41
  • 3108

Linux GDB程序调试工具使用简介

GDB概述GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工...
  • zhaobryant
  • zhaobryant
  • 2016年04月01日 18:38
  • 1823

(每日算法)LeetCode --- Word Search(矩阵中查找单词)

在矩阵中查找给定的单词是否出现,可以向上、向下、向左和向右查找。不能在一个字母上重复查找。 Given a 2D board and a word, find if the word exists ...
  • yapian8
  • yapian8
  • 2014年12月08日 21:02
  • 882

Word Search问题及解法

问题描述: Given a 2D board and a word, find if the word exists in the grid.The word can be constructe...
  • u011809767
  • u011809767
  • 2017年08月01日 21:26
  • 97

字符串系列---word search

题目 已知:一个二维字符矩阵,一个单词; 输出:该单词是否可以从二维矩阵中拼接出来?拼接规则:从矩阵的某一行的某个字母开始,持续向临近的字符扩展(向上,向下,向左,向右),直至拼接出该单词。若可以...
  • bh_xiaoxinba
  • bh_xiaoxinba
  • 2016年10月14日 14:19
  • 83

Leetcode 79. Word Search 要真正理解回溯的写法!

Leetcode 79. Word Search  public class Solution { public static void main(String[] args){ ...
  • chengdezhi2011
  • chengdezhi2011
  • 2017年03月05日 23:22
  • 272

LeetCode 79. Word Search 二维平面使用回溯法

79. Word Search Given a 2D board and a word, find if the word exists in the grid. The word ca...
  • wys2011101169
  • wys2011101169
  • 2017年06月13日 20:44
  • 166
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode Word Search
举报原因:
原因补充:

(最多只允许输入30个字)