【力扣刷题练习】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;
    }
};

题目思路:

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

相关推荐
I_belong_to_jesus6 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Code_Solitude13 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司13 小时前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
文丑颜不良啊14 小时前
LeetCode2821~2840题目解析
java·leetcode
YLCHUP16 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
思麟呀16 小时前
背包DP(01背包+完全背包)
c++·算法
笑容掩饰我的失落17 小时前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
Pniubi18 小时前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
꧁细听勿语情꧂19 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法