#include <iostream>
#include <string>
using std::cout;
using std::endl;
using std::string;
struct Node {
char data;
Node* next;
};
Node* top = nullptr;
void push(char a) {
Node* temp = new Node;
temp->data = a;
temp->next = top;
top = temp;
}
void pop() {
if (top != nullptr) {
Node* temp = top;
top = top->next;
delete temp;
}
}
void Print(){
Node *temp = top;
while(temp!=nullptr){
cout<<temp->data<<endl;
temp=temp->next;
}
}
class Solution {
public:
bool isValid(string s) {
for (char c : s) {
if (c == '(' || c == '{' || c == '[') {
push(c);
Print();
} else {
if (top == nullptr) return false;
char topchar = top->data;
if ((c == ')' && topchar == '(') || (c == '}' && topchar == '{') || (c == ']' && topchar == '[')) {
Print();
pop();
} else {
return false;
}
}
}
return top == nullptr;
}
};
int main()
{
Solution s;
std::cout << s.isValid("{[]}");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OmVuZGw7CnVzaW5nIHN0ZDo6c3RyaW5nOwoKc3RydWN0IE5vZGUgewogICAgY2hhciBkYXRhOwogICAgTm9kZSogbmV4dDsKfTsKTm9kZSogdG9wID0gbnVsbHB0cjsKCnZvaWQgcHVzaChjaGFyIGEpIHsKICAgIE5vZGUqIHRlbXAgPSBuZXcgTm9kZTsKICAgIHRlbXAtPmRhdGEgPSBhOwogICAgdGVtcC0+bmV4dCA9IHRvcDsKICAgIHRvcCA9IHRlbXA7Cn0KCnZvaWQgcG9wKCkgewogICAgaWYgKHRvcCAhPSBudWxscHRyKSB7CiAgICAgICAgTm9kZSogdGVtcCA9IHRvcDsKICAgICAgICB0b3AgPSB0b3AtPm5leHQ7CiAgICAgICAgZGVsZXRlIHRlbXA7CiAgICB9Cn0KCnZvaWQgUHJpbnQoKXsKICAgIE5vZGUgKnRlbXAgPSB0b3A7CiAgICB3aGlsZSh0ZW1wIT1udWxscHRyKXsKICAgICAgICBjb3V0PDx0ZW1wLT5kYXRhPDxlbmRsOwogICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgIH0KfQoKY2xhc3MgU29sdXRpb24gewpwdWJsaWM6CiAgICBib29sIGlzVmFsaWQoc3RyaW5nIHMpIHsKICAgICAgICBmb3IgKGNoYXIgYyA6IHMpIHsKICAgICAgICAgICAgaWYgKGMgPT0gJygnIHx8IGMgPT0gJ3snIHx8IGMgPT0gJ1snKSB7CiAgICAgICAgICAgICAgICBwdXNoKGMpOwogICAgICAgICAgICAgICAgUHJpbnQoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICh0b3AgPT0gbnVsbHB0cikgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgY2hhciB0b3BjaGFyID0gdG9wLT5kYXRhOwogICAgICAgICAgICAgICAgaWYgKChjID09ICcpJyAmJiB0b3BjaGFyID09ICcoJykgfHwgKGMgPT0gJ30nICYmIHRvcGNoYXIgPT0gJ3snKSB8fCAoYyA9PSAnXScgJiYgdG9wY2hhciA9PSAnWycpKSB7CiAgICAgICAgICAgICAgICAgICAgUHJpbnQoKTsKICAgICAgICAgICAgICAgICAgICBwb3AoKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0b3AgPT0gbnVsbHB0cjsKICAgIH0KfTsKCmludCBtYWluKCkKewoJU29sdXRpb24gczsKCQoJc3RkOjpjb3V0IDw8IHMuaXNWYWxpZCgie1tdfSIpOwoKfQ==