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.
题意:判断这个数独是不是一个合法的数据,也就是说,一行,一列,还有一块,都只能是从1-9不能重复。
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
public boolean isValidSudoku(char[][] board) {
List<Set<Character>> rl = new ArrayList<Set<Character>>();
List<Set<Character>> cl = new ArrayList<Set<Character>>();
List<Set<Character>> sl = new ArrayList<Set<Character>>();
for(int i=0; i<9; i++) {
rl.add(new HashSet<Character>());
cl.add(new HashSet<Character>());
sl.add(new HashSet<Character>());
}
int n = board.length;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
char c = board[i][j];
if(c=='.') continue;
else if(rl.get(i).contains(c) || cl.get(j).contains(c) || sl.get(i/3*3 + j/3).contains(c)) return false;
else {
rl.get(i).add(c);
cl.get(j).add(c);
sl.get(i/3*3+j/3).add(c);
}
}
}
return true;
}