1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 | class Solution {
public:
std::unordered_map<char, char> parMap = {
{')', '('},
{']', '['},
{'}', '{'}
};
std::unordered_set<char> leftParSet = {'(', '[', '{'};
bool processRight(std::stack<char> &stack, char c) {
cout << "right : c = " << c << endl;
if (stack.size() == 0)
return false;
if (stack.top() != parMap[c])
return false;
stack.pop();
return true;
}
bool isValid(string s) {
std::stack<char> stack;
for (char c : s)
if (leftParSet.count(c))
stack.push(c);
else if (!processRight(stack, c))
return false;
return stack.size() == 0;
}
};
|