栈
char pairs(char a) //当传入的是右括号时,返回值是字符的ASCII值,当都不是时,返回0
{
if (a == '}') return '{';
if (a == ']') return '[';
if (a == ')') return '(';
return 0;
}
bool isValid(char* s)
{
int n = strlen(s); //求字符串s的长度
if (n % 2 == 1) //如果是奇数返回false
{
return false;
}
int stk[n + 1], top = 0; //创建栈
for (int i = 0; i < n; i++)
{
char ch = pairs(s[i]);
if (ch)
{
if (top == 0 || stk[top - 1] != ch)
{
return false;
}
top--;
}
else
{
stk[top++] = s[i];
}
}
return top == 0;
}