题目:
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.
class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
return isValidRow(board) && isValidCol(board) && isValidSub(board);
}
private:
bool isValidRow(vector<vector<char>> &a) {
for (int i = 0; i < 9; i++) {
int tmp[255] = { 0 };
for (int j = 0; j < 9; j++)
tmp[a[i][j]]++;
for (int k = '0'; k <= '9'; k++) {
if (tmp[k] >1)
return false;
}
}
return true;
}
bool isValidCol(vector<vector<char>> &a) {
for (int j = 0; j < 9; j++) {
int tmp[255] = { 0 };
for (int i = 0; i < 9; i++)
tmp[a[i][j]]++;
for (int k = '0'; k <= '9'; k++) {
if (tmp[k] > 1)
return false;
}
}
return true;
}
bool isValidSub(vector<vector<char>> &a) {
for (int i = 0; i < 9; i += 3) {
for (int j = 0; j < 7; j += 3) {
int tmp[255] = { 0 };
for (int m = 0; m < 3; m++) {
for (int n = 0; n < 3; n++)
tmp[a[i + m][j + n]]++;
}
for (int k = '0'; k <= '9'; k++) {
if (tmp[k] > 1)
return false;
}
}
}
return true;
}
};