NO36.有效的字符
#暴力破解 # 数字 1-9 在每一行只能出现一次。 # 数字 1-9 在每一列只能出现一次。 # 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次 class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: #求每行列的个数可求不为3的情况 col = len(board[0]) row = len(board) #判断每行有无相同的值 for i in range(row): num_set = set() #构建集合,判断添加有无该值 for j in range(col): if board[i][j].isnumeric()==False: continue elif board[i][j] not in num_set: num_set.add(board[i][j]) else: return False #判断每行有无相同的值(很相似) for i in range(col): num_set = set() #构建集合,判断添加有无该值 for j in range(row): if board[j][i].isnumeric()==False: continue elif board[j][i] not in num_set: num_set.add(board[j][i]) else: return False #判断每一个粗实线有无相同的值,找规律发现为每3个一跳 for i in range(0, row, 3): for j in range(0, col, 3): num_set = set() for x in range(i, i+3): for y in range(j, j+3): if board[x][y].isnumeric() == False: continue elif board[x][y] not in num_set: num_set.add(board[x][y]) else: return False #其他情况返回正确 return True