Leetcode基础刷题之PHP解析(79. Word Search)

栏目: PHP · 发布时间: 6年前

2 0 1 9 -6-14   期五  

Leetcode基础刷题之 PHP 解析(78. Subsets)

Leetcode基础刷题之PHP解析(79. Word Search)

给定一个二维数组,其实可以理解成网格,然后让我们再网格中寻找是否存在指定的元素,当然它的寻找方式有点特殊,你只能在你需要匹配的当前字符串的上下左右的位置找下一个匹配的字符串,如果匹配那么继续找,就可以理解成下象棋一下 ,小兵的下一步只能左右上下?.emmmm打脸了,小兵不能后退。

所以我们需要遍历两层,第一层可以理解成行,第二层是列,先找到第一个和给定字符串第一个字母相等的位置。确定开始的位置,然后开始递归的调用,递归里面,因为是一个个去匹配的,所以我们需要知道当前匹配的是哪个字符串,另外一个当前匹配完的数不能再次利用,所以需要标记。就是因为需要考虑的情况太多,所以这道题显得很麻烦,具体看php代码。

/**
     * @param String[][] $board
     * @param String $word
     * @return Boolean
     */
    function exist($board, $word) {
        if(empty($board) || empty($board[0])) return false;
        
        for($i=0;$i<count($board);$i++){
            for($j=0;$j<count($board[0]);$j++){
                if($this->helper($board,$word,0,$i,$j,$visited[$i][$j])) return true;
            
            }
        }
        return false;
    }
    
    function helper($board,$word,$index,$row,$col, &$visited){
        //找到匹配的单词
        if($index==strlen($word)) return true; 
        
        //边界的处判断以及 当前行列对应值是否和匹配的当前位置字符串相等
       if($row<0 || $col <0 || $row >= count($board) || $col>=count($board[0]) 
          || $visited[$row][$col] || $board[$row][$col] != $word[$index] ) return false;
       
        $visited[$row][$col]=true;
        //递归调用下一个需要匹配的四个方向行列位置的变化
        if($this->helper($board,$word,$index+1,$row-1,$col,$visited)  || $this->helper($board,$word,$index+1,$row+1,$col,$visited) 
           || $this->helper($board,$word,$index+1,$row,$col-1,$visited) || $this->helper($board,$word,$index+1,$row,$col+1,$visited)) return true;
        
        //此路不通爷回退
        $visited[$row][$col]=false;
    
        return false;
       
    }

Github整理地址 : https://github.com/wuqinqiang/leetcode-php


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

解密硅谷

解密硅谷

[美]米歇尔 E. 梅西纳(Michelle E. Messina)、乔纳森 C. 贝尔(Jonathan C. Baer) / 李俊、李雪 / 机械工业出版社 / 2018-12 / 50.00

《解密硅谷》由身处硅谷最中心的连续创业者米歇尔·梅西纳和资深的投资人乔纳森·贝尔联合撰写,二人如庖丁解牛一般为读者深入剖析硅谷成功的原因:从硅谷的创新机制、创业生态、投资领域的潜规则、秘而不宣的价值观等角度,让阅读本书的人能够在最短的时间内,拥有像硅谷人一样的商业头脑,从而快速发现机遇,顺利地躲过创业的坑,熬过创业生死挑战中的劫数,带领初创公司顺利地活下去,并实现快速增长。 如果初创公司能够......一起来看看 《解密硅谷》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器