1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
impl Solution {
pub fn solve(board: &mut Vec<Vec<char>>) {
let m = board.len();
let n = if m > 0 { board[0].len() } else { 0 };
fn dfs(board: &mut Vec<Vec<char>>, i: isize, j: isize, m: usize, n: usize) {
if i < 0 || i >= m as isize || j < 0 || j >= n as isize || board[i as usize][j as usize] != 'O' { return; }
board[i as usize][j as usize] = '#';
dfs(board, i-1, j, m, n); dfs(board, i+1, j, m, n);
dfs(board, i, j-1, m, n); dfs(board, i, j+1, m, n);
}
for i in 0..m {
if board[i][0] == 'O' { dfs(board, i as isize, 0, m, n); }
if board[i][n-1] == 'O' { dfs(board, i as isize, (n-1) as isize, m, n); }
}
for j in 0..n {
if board[0][j] == 'O' { dfs(board, 0, j as isize, m, n); }
if board[m-1][j] == 'O' { dfs(board, (m-1) as isize, j as isize, m, n); }
}
for i in 0..m {
for j in 0..n {
if board[i][j] == 'O' { board[i][j] = 'X'; }
else if board[i][j] == '#' { board[i][j] = 'O'; }
}
}
}
}
|