import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Solution {
public boolean isValidSudoku(char[][] board) {
if(board==null)
return false;
int size=board.length;
boolean res=true;
Set<Character> temp=new HashSet<Character>();
//按行检验
for(int i=0;i<size;i++)
{
temp.clear();
for(int j=0;j<size;j++)
{
if(board[i][j]!='.')
{
if(temp.contains(board[i][j]))
return false;
else
temp.add(board[i][j]);
}
}
}
//按列检验
for(int j=0;j<size;j++)
{
temp.clear();
for(int i=0;i<size;i++)
{
if(board[i][j]!='.')
{
if(temp.contains(board[i][j]))
return false;
else
temp.add(board[i][j]);
}
}
}
//按3*3检验
for(int i=0;i<size;)
{
for(int j=0;j<size;)
{
if(i+3>size||j+3>size)
continue;
temp.clear();
for(int index=i;index<i+3&&index<size;index++)
{
for(int jdex=j;jdex<j+3&&jdex<size;jdex++)
{
if(board[index][jdex]!='.')
{
if(temp.contains(board[index][jdex]))
return false;
else
temp.add(board[index][jdex]);
}
}
}
j+=3;
}
i+=3;
}
return res;
}
}