美文网首页
每日一题——有效括号序列

每日一题——有效括号序列

作者: 拉普拉斯妖kk | 来源:发表于2023-08-03 18:23 被阅读0次

题目


给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列。
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

数据范围:字符串长度 0≤n≤10000

要求:空间复杂度 O(n),时间复杂度 O(n)

示例1

输入:
"["
返回值:
false

示例2

输入:
"[]"
返回值:
true

示例3

输入:
"{{"
返回值:
false

思路


使用一个辅助栈,每次遇到'(','{','['这三种字符的时候,将字符入栈;而每次遇到')','}',']'这三种字符的时候则让对应的匹配字符出栈。

解答代码


class Solution {
public:
    /**
     * @param s string字符串 
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
        auto size = s.size();
        if (size == 0 || size % 2 == 1) {
            return false;
        }
        stack<char> tmp;
        for (int i = 0; i < size; i++) {
            if ('(' == s[i] || '{' == s[i] || '[' == s[i]) {
                tmp.push(s[i]);
            } else if (')' == s[i]) {
                if (tmp.empty() || tmp.top() != '(') {
                    return false;
                }
                tmp.pop();
            } else if ('}' == s[i]) {
                if (tmp.empty() || tmp.top() != '{') {
                    return false;
                }
                tmp.pop();
            } else if (']' == s[i]) {
                if (tmp.empty() || tmp.top() != '[') {
                    return false;
                }
                tmp.pop();
            }
        }
        // 退出循环后需保证栈内没有元素才是有效的
        if (!tmp.empty()) {
            return false;
        }
        return true;
    }
};

相关文章

  • python每日一题总结8

    20180625 qzd 每日一题26 -- 有效单词词广场 给定一个单词序列,检查它是否构成一个有效单词广场。一...

  • 有效的括号序列

    描述 给定一个字符串所表示的括号序列,包含以下字符: (, ), {, }, [ 和 ], 判定是否是有效的括号序...

  • LeetCode每日一题,有效的括号

    题目 有效的括号[https://leetcode-cn.com/problems/valid-parenthes...

  • 每日一题-leetcode 有效的括号

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

  • 423. 有效的括号序列

    423. 有效的括号序列 描述 笔记 数据 评测 给定一个字符串所表示的括号序列,包含以下字符: '(', ')'...

  • LeetCode 每日一题 [6] 有效的括号

    LeetCode 有效的括号 [简单] 给定一个只包括 '(',')','{','}','[',']' 的字符串...

  • 423. 有效的括号序列

    给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', ...

  • [POJ2955]Brackets

    题面描述 我们给出了正则括号序列的如下归纳定义:· 空序列是正则括号序列· 如果s是正则方括号序列,那么(s)和[...

  • 每日一练(36):有效的括号

    title: 每日一练(36):有效的括号 categories:[剑指offer] tags:[每日一练] da...

  • 括号序列

    题目描述给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括...

网友评论

      本文标题:每日一题——有效括号序列

      本文链接:https://www.haomeiwen.com/subject/ccgmpdtx.html