力扣20 有效的括号

76 阅读1分钟

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true

思路:搞个栈,凡是左括号 无脑堆到栈里面,碰到右括号,看栈顶元素是不是与之匹配的,不是直接false 是的话栈顶元素出栈,继续下一轮遍历,最后在看看栈是不是为空,为空就代表括号没问题

class Solution {
public:
    bool isValid(string s) {
deque <char> deq;
for(int i=0;i<s.size();i++)
{
if(s[i]=='('||s[i]=='{'||s[i]=='[')
deq.push_front(s[i]);
else if(s[i]==')')
{
    if(deq.front()=='(') deq.pop_front();
    else return false;
}
else if(s[i]=='}')
{
    if(deq.front()=='{') deq.pop_front();
    else return false;
}
else if(s[i]==']')
{
    if(deq.front()=='[') deq.pop_front();
    else return false;
}

}
if (deq.size()==0) return true;
else return false;
    }
};