#include <iostream>
(30316)#include <stack>
#include <unordered_map>
class Solution {
public:
bool isValid(string s) {
stack<char> stack;
unordered_map<char, char> match;
match.insert(std::make_pair('(', ')'));
match.insert(std::make_pair('[', ']'));
match.insert(std::make_pair('{', '}'));
for (char c : s) {
if (match.find(c) != match.end()) {
stack.push(c);
} else {
if (stack.empty() || match[stack.top()] != c) {
return false;
}
stack.pop();
}
}
return stack.empty();
}
};
int main() {
Solution solution;
string testString = "{[()]}";
bool result = solution.isValid(testString);
std::cout << "Is the string valid? " << (result ? "Yes" : "No") << std::endl;
return 0;
}