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.
---
public class Solution { public boolean isValidSudoku(char[][] board) { int n = board.length; // check each row for (int i = 0; i < n; i++) { if (!checkRow(i, board, n)) return false; } // check each col for (int j = 0; j < n; j++) { if (!checkCol(j, board, n)) return false; } // check 9*9 block for (int i = 0; i < n; i=i+3) { for (int j = 0; j<n; j=j+3) { if (!checkBlock(i, j, board, n)) return false; } } return true; } public boolean checkBlock(int r, int c, char[][] board, int n) { int helper = 0; for (int i = r; i < r+3; i++) { for (int j = c; j < c+3; j++) { int val = board[i][j]; if( (helper & (1<<val)) > 0) return false; if (val != '.') helper |= 1 << val; } } return true; } public boolean checkRow(int r, char[][] board, int n) { int helper = 0; for (int j = 0; j < n; j++) { int val = board[r][j]; if( (helper & (1<<val)) > 0) return false; if (val != '.') helper |= 1 << val; } return true; } public boolean checkCol(int c, char[][] board, int n) { int helper = 0; for (int i = 0; i < n; i++) { int val = board[i][c]; if( (helper & (1<<val)) > 0) return false; if (val != '.') helper |= 1 << val; } return true; } }