Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
Subscribe to see which companies asked this question
横着,竖着,3*3方块,挨个判断,逻辑比较简单
class Solution(object):
def isValidSudoku(self, board):
zeros = [0]*10
res = zeros[:]
b = board
#横排的
for i in b:
#print max(i)
for j in i:
#print j
if j == '.':
continue
else:
res[int(j)] += 1
#print res
if max(res) > 1:
return False
res = zeros[:]
#竖排的
for j in range(0,9):
for i in range(0,9):
if b[i][j] == '.':
continue
else:
res[int(b[i][j])] += 1
#print res
if max(res) > 1:
return False
res = zeros[:]
for i in range(0,9,3):
for j in range(0,9,3):
#print i,j
try:
#print int(b[i][j])
if b[i][j] != '.':
res[int(b[i][j])] += 1
if b[i][j+1] != '.':
res[int(b[i][j+1])] += 1
if b[i][j+2] != '.':
res[int(b[i][j+2])] += 1
if b[i+1][j] != '.':
res[int(b[i+1][j])] += 1
if b[i+1][j+1] != '.':
res[int(b[i+1][j+1])] += 1
if b[i+1][j+2] != '.':
res[int(b[i+1][j+2])] += 1
if b[i+2][j] != '.':
res[int(b[i+2][j])] += 1
if b[i+2][j+1] != '.':
res[int(b[i+2][j+1])] += 1
if b[i+2][j+2] != '.':
res[int(b[i+2][j+2])] += 1
#print res
if max(res) > 1:
return False
res = zeros[:]
except:
continue
return True