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.
public class Solution {
public boolean isValidSudoku(char[][] board) {
for(int i = 0; i <= 8; i++){
if(!isParticallyValid(board,i,0,i,8)) return false;
if(!isParticallyValid(board,0,i,8,i)) return false;
}
for(int i = 0; i<3; i++){
for(int j = 0; j<3; j++){
if(!isParticallyValid(board,i*3,j*3,i*3+2,j*3+2)) return false;
}
}
return true;
}
private boolean isParticallyValid(char[][] board, int x1, int y1,int x2,int y2){
Set singleSet = new HashSet();
for(int i = x1; i <= x2; i++){
for(int j = y1; j <= y2; j++){
if(board[i][j] != '.') if(!singleSet.add(board[i][j])) return false;
}
}
return true;
}
}