Valid Parentheses
C++
#include <iostream>
#include <stack>
#include <unordered_map>
using namespace std;
class Solution
{
public:
bool isValid(string s)
{
if (s.size() == 0)
return true;
unordered_map<char, char> T = {{'(', ')'}, {'[', ']'}, {'{', '}'}};
stack<char> bracket_stack;
int i = 1;
bracket_stack.push(s[0]);
while (i < s.size())
{
if (s[i] == '(' || s[i] == '[' || s[i] == '{')
{
bracket_stack.push(s[i++]);
}
else
{
if (bracket_stack.empty())
return false;
if (s[i] == T[bracket_stack.top()])
{
bracket_stack.pop();
i++;
}
else
{
return false;
}
}
}
return bracket_stack.empty() && i == s.size();
}
};
int main()
{
Solution *s = new Solution();
cout << s->isValid("([)]") << endl;
// system("pause");
return 0;
}python
Last updated
Was this helpful?