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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class Solution { public boolean isValidSudoku(char[][] board) { if (board == null || board.length != 9 || board[0].length != 9) { return false; } for (int i = 0; i < 9; i++) { HashSet<Character> row = new HashSet<>(); HashSet<Character> col = new HashSet<>(); HashSet<Character> cube = new HashSet<>(); for (int j = 0; j < 9; j++) { if (board[i][j] != '.' && !row.add(board[i][j])) return false; if (board[j][i] != '.' && !col.add(board[j][i])) return false; int rowIndex = 3 * (i / 3); int colIndex = 3 * (i % 3); if (board[rowIndex + j / 3][colIndex + j % 3] != '.' && !cube.add(board[rowIndex + j / 3][colIndex + j % 3])) return false; } } return true; } }
|