—Easy
https://leetcode.com/problems/available-captures-for-rook/
Code:
class Solution:
def numRookCaptures(self, board) -> int:
ans_cnt = 0
m = len(board)
n = len(board[0])
for i in range(m):
for j in range(n):
if board[i][j] == 'R':
for e in range(0,i)[::-1]:
if board[e][j] == 'p':
ans_cnt += 1
#print('is here :', e, j)
break
if board[e][j] == 'B':
break
if board[e][j] == '.':
continue
for e in range(i+1,m):
if board[e][j] == 'p':
ans_cnt += 1
#print('is here :', e, j)
break
if board[e][j] == 'B':
break
if board[e][j] == '.':
continue
for e in range(0,j)[::-1]:
if board[i][e] == 'p':
ans_cnt += 1
#print('is here :', i, e)
break
if board[i][e] == 'B':
break
if board[i][e] == '.':
continue
for e in range(j+1,n):
if board[i][e] == 'p':
ans_cnt += 1
#print('is here :',i,e)
break
if board[i][e] == 'B':
break
if board[i][e] == '.':
continue
break
return ans_cnt
# s = Solution()
# print(s.numRookCaptures([[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]))
# print(s.numRookCaptures([[".",".",".",".",".",".",".","."],[".","p","p","p","p","p",".","."],[".","p","p","B","p","p",".","."],[".","p","B","R","B","p",".","."],[".","p","p","B","p","p",".","."],[".","p","p","p","p","p",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]]))
# print(s.numRookCaptures([[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","p",".",".",".","."],["p","p",".","R",".","p","B","."],[".",".",".",".",".",".",".","."],[".",".",".","B",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."]]))
思路:
1.找到R的位置进行上下左右四个方向遍历即可
2.range的逆序