Day 19
题目描述
思路
其实还挺简单的,主要的难点在于如何判断每个小数独是否满足要求
详细见代码
class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set= new HashSet<>();//处理行HashSet<Character> set1= new HashSet<>();//处理左边第一个小数独HashSet<Character> set2= new HashSet<>();//处理左边第二个小数独HashSet<Character> set3= new HashSet<>();//处理左边第三个小数独HashSet<Character> set4= new HashSet<>();//处理列for(int i=0;i<9;i++){//行set.clear();//每次换行,清空setif(i==0||i==3||i==6){//由于小数独不好处理,可以发现0 3 6分别为三行小数独的起始行set1.clear();set2.clear();set3.clear();}set4.clear();//列set清空for(int j=0;j<9;j++){if(board[i][j]!='.'){if(set.contains(board[i][j])){//行如果存在重复return false;}else{//行不存在重复,加入setset.add(board[i][j]);}if(j<3){//第一个数独if(set1.contains(board[i][j])){return false;}set1.add(board[i][j]);}if(3<=j&&j<6){//第二个数独if(set2.contains(board[i][j])){return false;}set2.add(board[i][j]);}if(6<=j){//第三个数独if(set3.contains(board[i][j])){return false;}set3.add(board[i][j]);}}if(board[j][i]!='.'){//列if(set4.contains(board[j][i])){return false;}set4.add(board[j][i]);} }}return true;}
}