import java.util.*;
public class Solution {
/**
* 判断岛屿数量
* @param grid char字符型二维数组
* @return int整型
*/
public int solve(char[][] grid) {
// write code here
int column = grid.length, line = grid[0].length;
int ans = 0;
boolean[][] isVisited = new boolean[column][line];
for (int i = 0; i < column; i++) {
for (int j = 0; j < line; j++) {
if (!isVisited[i][j] && grid[i][j] == '1') {
ans++;
DFS2(grid, isVisited, i, j);
}
}
}
return ans;
}
public void DFS2(char[][] grid, boolean[][] isVisited, int x, int y) {
if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length ||
grid[x][y] == '0' || isVisited[x][y]) {
return;
} else {
isVisited[x][y] = true;
DFS2(grid, isVisited, x + 1, y);
DFS2(grid, isVisited, x - 1, y);
DFS2(grid, isVisited, x, y + 1);
DFS2(grid, isVisited, x, y - 1);
}
}
}