Description:
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
Solution:
Use a HashSet to find whether there exists duplicate numbers.
import java.util.HashSet;
public class Solution {
public boolean isValidSudoku(char[][] board) {
HashSet<Integer> set = new HashSet<Integer>();
int num;
for (int i = 0; i < 9; i++) {
set.clear();
for (int j = 0; j < 9; j++) {
if (board[i][j] == '.') {
continue;
} else {
num = board[i][j] - '0';
if (set.contains(num))
return false;
set.add(num);
}
}
}
for (int i = 0; i < 9; i++) {
set.clear();
for (int j = 0; j < 9; j++) {
if (board[j][i] == '.') {
continue;
} else {
num = board[j][i] - '0';
if (set.contains(num))
return false;
else
set.add(num);
}
}
}
for (int a = 0; a < 9; a += 3)
for (int b = 0; b < 9; b += 3) {
set.clear();
for (int i = a; i < a + 3; i++)
for (int j = b; j < b + 3; j++) {
if (board[i][j] == '.') {
continue;
} else {
num = board[i][j] - '0';
if (set.contains(num))
return false;
else
set.add(num);
}
}
}
return true;
}
}