Skip to content

Commit 742c396

Browse files
solves rook captures
1 parent 4378468 commit 742c396

File tree

2 files changed

+65
-1
lines changed

2 files changed

+65
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@
268268
| 989 | [Add to Array Form of Integer](https://leetcode.com/problems/add-to-array-form-of-integer) | [![Java](assets/java.png)](src/AddToArrayFormOfInteger.java) |
269269
| 993 | [Cousins in Binary Tree](https://leetcode.com/problems/cousins-in-binary-tree) | [![Java](assets/java.png)](src/CousinsInBinaryTree.java) |
270270
| 997 | [Find the Town Judge](https://leetcode.com/problems/find-the-town-judge) | [![Java](assets/java.png)](src/FindTheTownJudge.java) |
271-
| 999 | [Available Captures for Rook](https://leetcode.com/problems/available-captures-for-rook) | |
271+
| 999 | [Available Captures for Rook](https://leetcode.com/problems/available-captures-for-rook) | [![Java](assets/java.png)](src/AvailableCapturesForRook.java) |
272272
| 1002 | [Find Common Characters](https://leetcode.com/problems/find-common-characters) | |
273273
| 1005 | [Maximize Sum of Array After K Negations](https://leetcode.com/problems/maximize-sum-of-array-after-k-negations) | |
274274
| 1009 | [Complement of Base 10 Integer](https://leetcode.com/problems/complement-of-base-10-integer) | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/NumberComplement.java) |

src/AvailableCapturesForRook.java

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
public class AvailableCapturesForRook {
2+
private static final class Position {
3+
private final int row;
4+
private final int column;
5+
6+
private Position(int row, int column) {
7+
this.row = row;
8+
this.column = column;
9+
}
10+
}
11+
12+
private static final char ROOK = 'R';
13+
private static final char BISHOP = 'B';
14+
private static final char PAWN = 'p';
15+
16+
public int numRookCaptures(char[][] board) {
17+
Position rookPosition = getPosition(board, ROOK);
18+
return (canCapturePawnInNorth(board, rookPosition) ? 1 : 0) +
19+
(canCapturePawnInWest(board, rookPosition) ? 1 : 0) +
20+
(canCapturePawnInSouth(board, rookPosition) ? 1 : 0) +
21+
(canCapturePawnInEast(board, rookPosition) ? 1 : 0);
22+
}
23+
24+
private Position getPosition(char[][] board, char piece) {
25+
for (int row = 0 ; row < board.length ; row++) {
26+
for (int column = 0 ; column < board[0].length ; column++) {
27+
if (board[row][column] == piece) return new Position(row, column);
28+
}
29+
}
30+
return null;
31+
}
32+
33+
private boolean canCapturePawnInNorth(char[][] board, Position rookPosition) {
34+
for (int row = rookPosition.row - 1 ; row >= 0 ; row--) {
35+
if (board[row][rookPosition.column] == BISHOP) return false;
36+
if (board[row][rookPosition.column] == PAWN) return true;
37+
}
38+
return false;
39+
}
40+
41+
private boolean canCapturePawnInSouth(char[][] board, Position rookPosition) {
42+
for (int row = rookPosition.row + 1 ; row < board.length ; row++) {
43+
if (board[row][rookPosition.column] == BISHOP) return false;
44+
if (board[row][rookPosition.column] == PAWN) return true;
45+
}
46+
return false;
47+
}
48+
49+
private boolean canCapturePawnInWest(char[][] board, Position rookPosition) {
50+
for (int column = rookPosition.column + 1 ; column < board[0].length ; column++) {
51+
if (board[rookPosition.row][column] == BISHOP) return false;
52+
if (board[rookPosition.row][column] == PAWN) return true;
53+
}
54+
return false;
55+
}
56+
57+
private boolean canCapturePawnInEast(char[][] board, Position rookPosition) {
58+
for (int column = rookPosition.column - 1 ; column >= 0 ; column--) {
59+
if (board[rookPosition.row][column] == BISHOP) return false;
60+
if (board[rookPosition.row][column] == PAWN) return true;
61+
}
62+
return false;
63+
}
64+
}

0 commit comments

Comments
 (0)