给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
样例
样例 1:
输入:"([)]"
输出:False
样例 2:
输入:"()[]{}"
输出:True
挑战
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
string myzhan ;
int i = 0;
int count = 0;
int top = 0;
int valid = 0;
while(s[i])
{
if(s[i] == '(' || s[i] == '{' ||s[i] == '[' )
{
//myzhan[count] = s[i];
myzhan = myzhan + s[i];
count++;
switch(s[i])
{
case '(':
{
valid = 1;
break;
}
case '{':
{
valid = 2;
break;
}
case '[':
{
valid = 3;
break;
}
}
}
else if(s[i] == '}' || s[i] == ']' ||s[i] == ')' )
{
if(myzhan.size() == 0)
{
return false;
}
switch(s[i])
{
case '}':
{
if(valid != 2)
{
return false;
}
else
{
myzhan.erase(count-1,1);
count--;
}
break;
}
case ')':
{
if(valid != 1)
{
return false;
}
else
{
myzhan.erase(count-1,1);
count--;
}
break;
}
case ']':
{
if(valid != 3)
{
return false;
}
else
{
myzhan.erase(count-1,1);
count--;
}
break;
}
}
}
if(count > 0)
{
switch(myzhan[count-1])
{
case '(':
{
valid = 1;
break;
}
case '{':
{
valid = 2;
break;
}
case '[':
{
valid = 3;
break;
}
}
}
i++;
}
if(myzhan.size() == 0)
{
return true;
}
else
{
return false;
}
}
};