【力扣刷题练习】20. 有效的括号

题目描述:

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

题目解答:

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
        int n=s.size();
        if (n % 2)
            return false;
        stack<char> st;
        for (int i = 0; i < n; i++) {
            if (s[i] == '(' || s[i] == '{' || s[i] == '[')
                st.push(s[i]);
            else {
                if (!st.empty()) {
                    if (s[i] == ')' && st.top() == '(' ||
                        s[i] == '}' && st.top() == '{' ||
                        s[i] == ']' && st.top() == '['){
                            st.pop();
                            continue;
                        }
                }
                return false;
            }
        }
        return st.empty() ? true : false;
    }
};

题目思路:

栈的基本题型,基本思路为循环字符串,当遇到左括号入栈,遇到右括号则判断是否与栈顶元素匹配,若匹配则将栈顶左括号取出,若不匹配则直接终止,当整个字符串循环结束后以栈内元素是否为空来判断匹配结果。

相关推荐
_不会dp不改名_13 分钟前
leetcode_121 买卖股票的最佳时期
算法·leetcode·职场和发展
qq_5139704418 分钟前
力扣 hot100 Day52
算法·leetcode·职场和发展
xzkyd outpaper18 分钟前
Java中Queue以及Deque详解
java·数据结构·算法
机 _ 长1 小时前
微博视觉算法面试30问全景精解
算法·计算机视觉·目标跟踪·面试·职场和发展
一棵开花的树,枝芽无限靠近你2 小时前
数据结构之克鲁斯卡尔算法
数据结构·算法·c
运维成长记7 小时前
面试总结第54天微服务开始
面试·职场和发展
西猫雷婶7 小时前
python学智能算法(二十六)|SVM-拉格朗日函数构造
人工智能·python·算法·机器学习·支持向量机
jstart千语9 小时前
【力扣】第42题:接雨水
算法·leetcode·职场和发展
墨染点香9 小时前
LeetCode 刷题【10. 正则表达式匹配】
算法·leetcode·职场和发展
cookqq9 小时前
mongodb源代码分析createCollection命令由create.idl变成create_gen.cpp过程
数据库·算法·mongodb·nosql