leetcode-20. 有效的括号

一、题目描述

题目描述

二、思路

用栈stack<char>解决
(stack<int>也行,因为char本就是存储的ascii码)
遍历字符串:
1.遇到左括号就入栈;
2.遇到右括号就用栈顶元素判断是否匹配(先判断栈是否空,空则return false),然后弹出栈顶元素;
遍历完毕,若栈长度不为0则返回false,否则true。

三、代码

class Solution {
public:
    bool isValid(string s) {
        stack<char> sta;
        
        for(int i = 0; i < s.length(); i++){         
            if(s[i] == '(' || s[i] == '[' || s[i] == '{'){  //左括号,入栈
                    sta.push(s[i]);    
            }else{
                if(s[i] == ')'){  //右括号,栈顶元素与之匹配
                    if(sta.size() == NULL || sta.top() != '(') 
                        return false;
                }    
                if(s[i] == ']'){
                    if(sta.size() == NULL || sta.top() != '[') 
                        return false;
                }  
                if(s[i] == '}'){
                    if(sta.size() == NULL || sta.top() != '{') 
                        return false;
                }        
                //栈顶元素匹配成功,弹出此元素
                sta.pop();
            }
        }
        if(!sta.empty())  // 还有右括号的
            return false; 
        return true;
    }
};

四、结果

提交结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。