栈的应用:括号匹配
原题链接:https://leetcode-cn.com/problems/valid-parentheses/
括号匹配:
依次遍历字符串中的每一个字符
如果是左括号
压栈
如果是右括号
判断当前栈是否为空栈
右括号多于左括号 return false
取出栈顶括号(左括号)
拿左括号和右括号进行匹配
如果不匹配 return false
弹出栈顶的左括号
如果栈里还有左括号,左括号多 return false
return true
代码如下:
bool isValid(string s)
{
stack<char> stack_ch;
int size = s.size(); // 返回字符串的长度
for (int i = 0; i < size; i++)
{
char ch = s[i];
switch (ch)
{
case '(':
case '[':
case '{':
stack_ch.push(ch);
break;
case ')':
case ']':
case '}':{
if (stack_ch.empty())
{
return false;
}
char left = stack_ch.top();
if (!((left == '(' && ch == ')') //右括号多于左括号
|| (left == '[' && ch == ']')
|| (left == '{' && ch == '}')))
{
return false;
}
stack_ch.pop();
break;
}
default:
break;
}
if (!stack_ch.empty()) {
return false;
}
else {
return true;
}
}
}