给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
样例
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
挑战
O(n)的时间,n为括号的个数
class Solution {
public:
/**
* @param s A string
* @return whether the string is a valid parentheses
*/
bool isValidParentheses(string& s) {
// Write your code here
int n = s.length();
stack<char> buf;
for (int i = 0; i < n; i++)
{
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
{
buf.push(s[i]);
}
else if (s[i] == ')')
{
if (!buf.empty() && buf.top() == '(')
{
buf.pop();
}
else
{
return false;
}
}
else if (s[i] == '}')
{
if (!buf.empty() && buf.top() == '{')
{
buf.pop();
}
else
{
return false;
}
}
else
{
if (!buf.empty() && buf.top() == '[')
{
buf.pop();
}
else
{
return false;
}
}
}
return buf.empty();
}
};