资讯专栏INFORMATION COLUMN

Leetcode PHP题解--D74 999. Available Captures for Ro

马永翠 / 2522人阅读

摘要:给定代表棋盘格子的二维数组,出现的大写字母代表白方,小写代表黑方。思路先从二维数组中找到白色车。在逐方向遍历时,遇到时跳过,判断下一个格子。如此遍历四个方向,最终返回可吃棋子数量即可。

D74 999. Available Captures for Rook 题目链接

999. Available Captures for Rook

题目分析

在国际象棋中,“车”可以横向或竖向移动任意格子。

给定代表棋盘格子的二维数组,出现的大写字母代表白方,小写代表黑方。.代表空白格子。

返回白色车只走一次棋,有多少种吃法。

思路

先从二维数组中找到白色车R。再往四个方向遍历。

在逐方向遍历时,遇到.时跳过,判断下一个格子。

如果遇到同为大写字母时,即遇到己方棋子时,停止遍历。

如果遇到小写字母时,可吃棋子数+1,并停止遍历。

如此遍历四个方向,最终返回可吃棋子数量即可。

最终代码
 $row){
            $colNum = array_search("R",$row);
            if($colNum !== false){
                break;
            }
        }
        if($colNum===-1){
            return 0;
        }
        $captureable = 0;
        //找到后往四个方向搜索
        for($j=$colNum-1; $j>=0; $j--){
            if($board[$rowNum][$j] == "."){
                continue;
            }
            if(strtoupper($board[$rowNum][$j]) == $board[$rowNum][$j]){
                break;
            }
            if(strtolower($board[$rowNum][$j]) == $board[$rowNum][$j]){
                $captureable++;
                break;
            }
        }
        for($j=$colNum+1; $j<8; $j++){
            if($board[$rowNum][$j] == "."){
                continue;
            }
            if(strtoupper($board[$rowNum][$j]) == $board[$rowNum][$j]){
                break;
            }
            if(strtolower($board[$rowNum][$j]) == $board[$rowNum][$j]){
                $captureable++;
                break;
            }
        }
        for($i=$rowNum+1; $i<8; $i++){
            if($board[$i][$colNum] == "."){
                continue;
            }
            if(strtoupper($board[$i][$colNum]) == $board[$i][$colNum]){
                break;
            }
            if(strtolower($board[$i][$colNum]) == $board[$i][$colNum]){
                $captureable++;
                break;
            }
        }
        for($i=$rowNum-1; $i>=0; $i--){
            if($board[$i][$colNum] == "."){
                continue;
            }
            if(strtoupper($board[$i][$colNum]) == $board[$i][$colNum]){
                break;
            }
            if(strtolower($board[$i][$colNum]) == $board[$i][$colNum]){
                $captureable++;
                break;
            }
        }
        return $captureable;
    }
}

若觉得本文章对你有用,欢迎用爱发电资助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31616.html

相关文章

  • Leetcode PHP题解--D88 696. Count Binary Substrings

    摘要:则不算,因为两个被分割开了,不是连续的。思路只记录前一组是还是,以及出现的次数。相同,则判断是否与前一个字符相同。那么此时需要抛弃前一组的所有内容。当前一组未配对字符数量达到时,说明前一组已经没有可以匹配的字符。故把当前组替换未前一组。 D88 696. Count Binary Substrings 题目链接 696. Count Binary Substrings 题目分析 给定一...

    lanffy 评论0 收藏0
  • Leetcode PHP题解--D77 812. Largest Triangle Area

    摘要:题目链接题目分析给定一组坐标,返回能组成面积最大的三角形面积。思路只能套循环了。利用三边求面积公式得面积。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D77 812. Largest Triangle Area 题目链接 812. Largest Triangle Area 题目分析 给定一组坐标,返回能组成面积最大的三角形面积。 思路 只能套for循环了。利用三边求面积公式得面...

    SimonMa 评论0 收藏0
  • LeetCode - 013 - 罗马数字转整数(roman-to-integer)

    摘要:字符数值例如,罗马数字写做,即为两个并列的。通常情况下,罗马数字中小的数字在大的数字的右边。给定一个罗马数字,将其转换成整数。 Create by jsliang on 2019-05-23 13:24:24 Recently revised in 2019-05-23 14:55:20 一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 前言 三 解题 ...

    v1 评论0 收藏0
  • Leetcode PHP题解--D36 811. Subdomain Visit Count

    摘要:题目链接题目分析题目给定一个字符串数组,每个字符串分两部分,以空格分割。第一部分为访问次数,第二部分为域名。要求按同样的格式,分别返回顶级域名二级域名三级域名的访问次数。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 811. Subdomain Visit Count 题目链接 811. Subdomain Visit Count 题目分析 题目给定一个字符串数组,每个字符串分两部...

    inapt 评论0 收藏0
  • Leetcode PHP题解--D10 942. DI String Match

    摘要:题目链接题目分析给定一个只含和的字符串,返回一个数组。这个数组满足以下条件当为时,。当遇到时,在数组的当前下标位置前插入当前下标。最终代码个人认为这题不是很好描述。有空会尝试描述清楚这个问题。 942. DI String Match 题目链接 942. DI String Match 题目分析 给定一个只含I和D的字符串S,返回一个数组。 这个数组满足以下条件: 当S[i]为I时...

    yibinnn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<