自己写的代码
public boolean isValidSudoku(char[][] board) {
char str[] = new char[9];
//找横着的
for(int i=0; i<9; i++) {
for(int j=0; j<9; j++) {
str[j] = board[i][j];
}
if(isRe(str)) {
return false;
}
}
//竖着的
for(int i=0; i<9; i++) {
for(int j=0; j<9; j++) {
str[j] = board[j][i];
}
if(isRe(str)) {
return false;
}
}
//找小九宫格
for(int i=0; i<9; i+=3) {
for(int j=0; j<9; j+=3) {
int k = i;
int t = j;
int ii = k+3;
int jj = t+3;
int sign = 0;
//System.out.println("i="+i+","+"j="+j);
for(; k<ii; k++) {
for(; t<jj; t++) {
str[sign++] = board[k][t];
}
}
if(!isRe(str)) {
return false;
}
}
}
return true;
}
public static boolean isRe(char[]str) {
int num [] = new int[9];
for(int i=0; i<str.length; i++) {
if(str[i] == '.') {
}else {
if(num[str[i] - '1'] == 1) {
//重复
return true;
}else {
//不重复
num[str[i] - '1'] = 1;
}
}
}
return false;
}
}