深度优先搜索

import java.util.*;


public class Solution {
    /**
     * 判断岛屿数量
     * @param grid char字符型二维数组 
     * @return int整型
     */
    public int solve (char[][] grid) {
        // write code here
        int m = grid.length;
        if(m == 0)
            return 0;
        int n = grid[0].length;
        int count = 0;
        for(int i =0;i<m;i++){
            for(int j = 0;j< n;j++){
                if(grid[i][j] == '1'){
                    count++;
                    dfs(grid,i,j);
                }
            }
        }
        return count;
    }
    public void dfs(char[][] grid,int i,int j){
        int n = grid.length;
        int m = grid[0].length;
        grid[i][j] ='0';
        if(i-1>=0&&grid[i-1][j]=='1'){
            dfs(grid,i-1,j);
        }
        if(j+1<m&&grid[i][j+1]=='1'){
            dfs(grid,i,j+1);
        }
        if(i+1<n&&grid[i+1][j]=='1'){
            dfs(grid,i+1,j);
        }
        if(j-1>=0&&grid[i][j-1]=='1'){
            dfs(grid,i,j-1);
        }
    }
}