一、题目描述
#### 二、实例
三、解题思路
我们可以用两层循环来对它进行遍历,当遇到R时记录它的横纵坐标 再对四个方向依次进行一个遍历,当遇到B时直接break,当遇到p时num++,再break。
四、代码
/**
* @param {character[][]} board
* @return {number}
*/
var numRookCaptures = function(board) {
let num = 0
for (let i = 0; i < 8; i++) {
for (let j = 0; j < 8; j++) {
if (board[i][j] == 'R') {
let m = i
let n = j
//i-1 上
while (--m >= 0) {
if (board[m][n] == 'B') break
if (board[m][n] == 'p') {
num++
break
}
}
m = i
//i+1 下
while (++m < 8) {
if (board[m][n] == 'B') break
if (board[m][n] == 'p') {
num++
break
}
}
m = i
//j-1 左
while (--n >=0) {
if (board[m][n] == 'B') break
if (board[m][n] == 'p') {
num++
break
}
}
n = j
//j+1 右
while (++n < 8) {
if (board[m][n] == 'B') break
if (board[m][n] == 'p') {
num++
break
}
}
return num
}
}
}
};