public class Solution {
    /**
     * 判断岛屿数量
     * @param grid char字符型二维数组 
     * @return int整型
     */
    public int solve (char[][] grid) {
        // write code here
        if(grid == null || grid.length == 0){
            return 0;
        }
        int landNum = 0;
        for(int i = 0;i< grid.length;i++){
            for(int j = 0;j< grid[0].length;j++){
                if(grid[i][j] == '1'){
                    landNum ++;
                    //相邻的都变成0
                    dfs(grid, i , j);
                }
                
            }
        }
        return landNum;
    }
    private void dfs(char[][] grid,int r,int c){
        int row = grid.length;
        int col = grid[0].length;
        if(r < 0 || c <0 || r >= row || c >= col || grid[r][c] == '0' ){
            return;
        }
        grid[r][c] = '0';
        dfs(grid, r -1, c);
        dfs(grid, r + 1, c);
        dfs(grid, r,c - 1);
        dfs(grid, r, c+1);
    }
}