给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。
样例:
括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]”则是无效的括号。
#ifndef C423_H
#define C423_H
#include<iostream>
#include<string>
#include<stack>
#include<map>
using namespace std;
class Solution {
public:
/*
* @param s: A string
* @return: whether the string is a valid parentheses
*/
bool isValidParentheses(string &s) {
// write your code here
if (s.empty())
return false;
int len = s.size();
if (len % 2 == 1)
return false;
map<char, char> table{ { '(', ')' }, { '{', '}' }, { '[', ']' } };
stack<char> brackets;
for (int i = 0; i < len; ++i)
{
if (brackets.empty())
brackets.push(s[i]);
else
{
if (table[brackets.top()] == s[i])
brackets.pop();
else
brackets.push(s[i]);
}
}
if (brackets.empty())
return true;
else
return false;
}
};
#endif