func solve(board [][]byte) {
if len(board) == 0 || len(board[0]) == 0 {
return
}
m, n := len(board), len(board[0])
var dfs func(i, j int)
dfs = func(i, j int) {
if i < 0 || i >= m || j < 0 || j >= n || board[i][j] != 'O' {
return
}
board[i][j] = 'A'
dfs(i, j+1)
dfs(i, j-1)
dfs(i+1, j)
dfs(i-1, j)
}
for i := 0; i < m; i++ {
dfs(i, 0)
dfs(i, n-1)
}
for i := 1; i < n-1; i++ {
dfs(0, i)
dfs(m-1, i)
}
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if board[i][j] == 'A' {
board[i][j] = 'O'
} else if board[i][j] == 'O' {
board[i][j] = 'X'
}
}
}
}