算是独立写出来的第一题…
dont you quit!
其实很简单 每行遍历 每列遍历 每个3*3方块遍历 只要有相同的就返回false
我第一次觉得boolean在判断重复(例如字符串重复字串)问题上这么好用…
class Solution {
public boolean isValidSudoku(char[][] board) {
if(board==null||board.length!=9||board[0].length!=9)
return false;
for(int row=0;row<9;row++){
boolean taken[]=new boolean[9];
for(int index=0;index<9;index++){
char c=board[row][index];
if(c!='.'){
int num=c-'1';
if(taken[num]==true) return false;
else taken[num-1]=true;
}
}
}
for(int col=0;col<9;col++){
boolean taken[]=new boolean[9];
for(int index=0;index<9;index++){
char c=board[index][col];
if(c!='.'){
int num=c-'1';
if(taken[num]==true) return false;
else taken[num]=true;
}
}
}
for(int box=0;box<9;box++){
boolean taken[]=new boolean[9];
for(int row=0;row<3;row++){
for(int col=0;col<3;col++){
char c=board[row+3*(box/3)][col+3*(box%3)];
if(c!='.'){
int num=c-'1';
if(taken[num]==true) return false;
taken[num]=true;
}
}
}
}
return true;
}
}
关于java特有的类型转换