力扣20. 有效的括号

Problem: 20. 有效的括号

文章目录

题目描述

思路

1.每次遇到左括号将其压入栈顶;

2.遇到右括号:

2.1.先判断当前栈是否为空,若为空则说明不合法;

2.2.弹出当前栈顶元素与当前的右括号配对,若不相互配对,则不合法;
3.最后判读栈是否为空,为空则合法,否则不合法.

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为字符串s的长度

空间复杂度:

O ( n ) O(n) O(n)

Code

cpp 复制代码
class Solution {
public:
    /**
     * Valid bracket
     *
     * @param s The given parenthesis string
     * @return bool
     */
    bool isValid(string s) {
        stack<char> stack;
        int len = s.length();
        for (int i = 0; i < len; ++i) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
                stack.push(s[i]);
            } else {
                if (stack.empty()) {
                    return false;
                } else {
                    char temp = stack.top();
                    stack.pop();
                    if (s[i] == ')' && temp != '(') {
                        return false;
                    }
                    if (s[i] == ']' && temp != '[') {
                        return false;
                    }
                    if (s[i] == '}' && temp != '{') {
                        return false;
                    }
                }
            }
        }
        return stack.empty() ? true : false;
    }
};
相关推荐
岁忧5 小时前
(nice!!!)(LeetCode 面试经典 150 题 ) 30. 串联所有单词的子串 (哈希表+字符串+滑动窗口)
java·c++·leetcode·面试·go·散列表
艾莉丝努力练剑5 小时前
【数据结构与算法】数据结构初阶:详解顺序表和链表(四)——单链表(下)
c语言·开发语言·数据结构·学习·算法·链表
yngsqq7 小时前
移动碰撞法 ——套料排版算法——CAD c#
算法
秋说8 小时前
【PTA数据结构 | C语言版】根据层序序列重构二叉树
c语言·数据结构·算法
秋说9 小时前
【PTA数据结构 | C语言版】前序遍历二叉树
c语言·数据结构·算法
会唱歌的小黄李9 小时前
【算法】贪心算法:最大数C++
c++·算法·贪心算法
NuyoahC9 小时前
笔试——Day8
c++·算法·笔试
墨染点香10 小时前
LeetCode Hot100 【1.两数之和、2.两数相加、3.无重复字符的最长子串】
算法·leetcode·职场和发展
秋说10 小时前
【PTA数据结构 | C语言版】二叉树层序序列化
c语言·数据结构·算法
地平线开发者11 小时前
开发者说|Aux-Think:为什么测试时推理反而让机器人「误入歧途」?
算法·自动驾驶