# 419 Battleships in a Board
先簡單講一下這題要求什麼。
input是一個char matrix,裡面有 'X' 和 ' . ' 兩種元素
相連的X代表是同一艘battleship,
board如下,代表有兩艘battleships,
X . . X
. . . X
. . . X
感覺跟number of islands差不多。
解法是跑過board裡的每個element,
當找到某battleship的最左上元素時,counter++,
當找到 '.' 或找到某X左邊或上面已經有X時,counter就不++。
完整程式碼:
public int countBattleships(char[][] board) {
int m = board.length;
if (m==0) return 0;
int n = board[0].length;
int count=0;
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++) {
if (board[i][j] == '.') continue;
if (i > 0 && board[i-1][j] == 'X') continue;
if (j > 0 && board[i][j-1] == 'X') continue;
count++;
}
}
return count;
}