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.
char转int:char-'0'即可
java中类似memset方法是Arrays.fill()方法
public class Solution {
public boolean isValidSudoku(char[][] board) {
int[] num=new int[10];
for(int i=0;i<9;i++){ //每行
Arrays.fill(num, 0); //赋值0
for(int j=0;j<9;j++){
if(board[i][j]!='.'&&num[board[i][j]-'0']==1)
return false;
if(board[i][j]!='.')
num[board[i][j]-'0']=1;
}
}
for(int j=0;j<9;j++){ //每列
Arrays.fill(num, 0);
for(int i=0;i<9;i++){
if(board[i][j]!='.'&&num[board[i][j]-'0']==1)
return false;
if(board[i][j]!='.')
num[board[i][j]-'0']=1;
}
}
for(int j=0;j<9;j+=3){ //每块
for(int i=0;i<9;i+=3){
Arrays.fill(num, 0);
for(int k=0;k<3;k++){
for(int t=0;t<3;t++){
if(board[j+k][i+t]!='.'&&num[board[j+k][i+t]-'0']==1)
return false;
if(board[j+k][i+t]!='.')
num[board[j+k][i+t]-'0']=1;
}
}
}
}
return true;
}
}