AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 商店
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

LeetCode 20. 有效的括号    原题链接    简单

作者: 作者的头像   南街戏子 ,  2022-08-06 09:53:52 ,  所有人可见 ,  阅读 14


2


题目描述

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

有效字符串需满足:

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

样例

输入:s = "()"
输出:true

算法1

(模拟) $O(n)$
思路:从前往后开始模拟,如果是左括号的话,加入栈中,如果是右括号的话,则与当前的栈
看下是否匹配(根据栈的特性先进后出),所以当前栈里的元素一定是距离当前右括号最近的
那个左括号,然后依次匹配即可

C++ 代码

class Solution {
public:
    bool isValid(string s) {
        stack<char> stk;
        for(auto c:s){
            if(c == '(' || c == '{' || c == '[')stk.push(c);
            else {
                if(stk.empty())return false;
                if(c == ')' && stk.top() == '(') stk.pop();
                else  if(c == '}' && stk.top() == '{') stk.pop();
                else  if(c == ']' && stk.top() == '[') stk.pop();
                else return false;
            }
        }
        return stk.empty();
    }
};

更好的阅读体验

0 评论

你确定删除吗?

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息