class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
bool ans = true;
const int gridSize = 9;
vector<set<char> > rowSets(gridSize);
vector<set<char> > colSets(gridSize);
vector<set<char> > gridSets(gridSize);
for (int i = 0; i < gridSize; ++i)
{
for (int j = 0; j < gridSize; ++j)
{
if (board[i][j] != '.')
{
if (rowSets[i].count(board[i][j]) == 0)
{
rowSets[i].insert(board[i][j]);
}
else
{
ans = false;
break;
}
if (colSets[j].count(board[i][j]) == 0)
{
colSets[j].insert(board[i][j]);
}
else
{
ans = false;
break;
}
int index = i / 3 * 3 + j / 3;
if (gridSets[index].count(board[i][j]) == 0)
{
gridSets[index].insert(board[i][j]);
}
else
{
ans = false;
break;
}
}
}
if (!ans)
{
break;
}
}
return ans;
}
};