classSolution{int m,n;int[] dx ={0,0,-1,1};int[] dy ={-1,1,0,0};publicvoidsolve(char[][] board){
m = board.length;
n = board[0].length;//先扫描边界,把不满足题意的连通块变为'.'for(int i =0; i < n; i++){if(board[0][i]=='O')dfs(board,0,i);if(board[m-1][i]=='O')dfs(board,m-1,i);}for(int j =0; j < m; j++){if(board[j][0]=='O')dfs(board,j,0);if(board[j][n-1]=='O')dfs(board,j,n-1);}//最后把'.'改会'o',把'o'改为'X'for(int i =0; i < m; i++)for(int j =0; j < n; j++){if(board[i][j]=='O')
board[i][j]='X';elseif(board[i][j]=='.')
board[i][j]='O';}}privatevoiddfs(char[][] board,int i,int j){
board[i][j]='.';for(int k =0; k <4; k++){int x = dx[k]+ i;int y = dy[k]+ j;if(x >=0&& x < m && y >=0&& y < n && board[x][y]=='O'){dfs(board,x,y);}}}}