Valid Sudoku
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 '.'
.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
Solution:
public class Solution {
public boolean isValidSudoku(char[][] board) {
Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
int row, column, subs;
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++){
if (board[i][j] != '.'){
int value = board[i][j] - '0';
row = i;
column = 9 + j;
subs = 18 + (i / 3) * 3 + (j / 3) ;
if (map.get(row) == null) {
Set<Integer> subset = new HashSet<Integer>();
map.put(row, subset);
}
if (map.get(column) == null) {
Set<Integer> subset = new HashSet<Integer>();
map.put(column, subset);
}
if (map.get(subs) == null) {
Set<Integer> subset = new HashSet<Integer>();
map.put(subs, subset);
}
if (map.get(row).contains(value)) return false;
else map.get(row).add(value);
if (map.get(column).contains(value)) return false;
else map.get(column).add(value);
if (map.get(subs).contains(value)) return false;
else map.get(subs).add(value);
}
}
}
return true;
}
}