有效的括号--利用栈

思路:从字符串的第一个位置开始遍历,若是该位置和栈顶元素能配对那么让栈顶元素出栈,若是不能和栈顶元素配对则讲该元素压入栈中。若是有效的字符串那么当栈中将没有字符串元素。
给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
    示例 1:

**输入:**s = "()"

**输出:**true

示例 2:

**输入:**s = "()[]{}"

**输出:**true

示例 3:

**输入:**s = "(]"

**输出:**false

示例 4:

**输入:**s = "([])"

**输出:**true

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
    int len = s.size();
    stack<char>st;
    st.push('#');
    for(int i = 0; i < len; i++)
    {
        if ((s[i] == ')' && st.top() == '(')||(s[i] == ']' && st.top() == '[') ||(s[i] == '}' && st.top() == '{'))
         st.pop();
         else
         {
            st.push(s[i]);
         }
    }
    return st.top() == '#';
    }
};
相关推荐
TechNomad12 分钟前
排序算法:希尔排序算法
数据结构·算法·排序算法
热爱生活的猴子12 分钟前
算法中DFS & BFS 核心学习笔记
算法·深度优先·宽度优先
im_AMBER13 分钟前
Leetcode 83 使数组平衡的最少移除数目中等相关标签 | 尽可能使字符串相等
数据结构·c++·笔记·学习·算法·leetcode
TechNomad15 分钟前
排序算法:快速排序算法
算法·排序算法
xu_yule15 分钟前
算法基础(图论)—拓扑排序
c++·算法·动态规划·图论·拓扑排序·aov网
mu_guang_16 分钟前
算法图解1-算法简介
算法·cpu·计算机体系结构
CoovallyAIHub17 分钟前
超越CUDA围墙:国产GPU在架构、工艺与软件栈的“三维替代”挑战
深度学习·算法·计算机视觉
不穿格子的程序员17 分钟前
从零开始写算法——二叉树篇2:二叉树的最大深度 + 翻转二叉树
算法·二叉树·深度优先
小O的算法实验室18 分钟前
2024年IEEE TAES SCI2区,一种改进人工电场算法用于机器人路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
gugugu.19 分钟前
算法:N皇后问题
算法