1. 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
    2. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
    3. 此外,你可以假设该网格的四条边均被水包围。
    4. 示例 1
    5. 输入:grid = [
    6. ["1","1","1","1","0"],
    7. ["1","1","0","1","0"],
    8. ["1","1","0","0","0"],
    9. ["0","0","0","0","0"]
    10. ]
    11. 输出:1
    1. class Solution {
    2. public int numIslands(char[][] grid) {
    3. if(grid == null && grid.length == 0) return 0;
    4. int cnt = 0;
    5. for (int x = 0; x < grid.length; x++) {
    6. for (int y = 0; y < grid[0].length; y++) {
    7. if (grid[x][y] == '1') {
    8. cnt++;
    9. dfs(grid, x, y);
    10. }
    11. }
    12. }
    13. return cnt;
    14. }
    15. public void dfs(char[][] grid,int x,int y){
    16. if(x >= grid.length || x < 0 || y >= grid[0].length || y < 0
    17. || grid[x][y] == '0') return;
    18. grid[x][y] = '0';
    19. dfs(grid,x+1,y);
    20. dfs(grid,x-1,y);
    21. dfs(grid,x,y+1);
    22. dfs(grid,x,y-1);
    23. }
    24. }