有效的括号--利用栈

思路:从字符串的第一个位置开始遍历,若是该位置和栈顶元素能配对那么让栈顶元素出栈,若是不能和栈顶元素配对则讲该元素压入栈中。若是有效的字符串那么当栈中将没有字符串元素。
给定一个只包括 '('')''{''}''['']' 的字符串 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() == '#';
    }
};
相关推荐
mmz12073 分钟前
差分数组(二维)(c++)
c++·算法
YGGP8 分钟前
【Golang】LeetCode 45. 跳跃游戏 II
算法·leetcode·游戏
闻缺陷则喜何志丹11 分钟前
【计算几何 化环为链】P14165 [ICPC 2022 Nanjing R] 清空水箱|普及+
c++·数学·算法·计算几何·洛谷·化环为链
爱吃生蚝的于勒13 分钟前
【Linux】深入理解软硬链接
linux·运维·服务器·c语言·数据结构·c++·算法
YGGP14 分钟前
【Golang】LeetCode 763. 划分字母区间
算法·leetcode
Heath03315 分钟前
BGE-M3个人理解
python·算法
Hello.Reader15 分钟前
Flink ML Bucketizer 连续特征分桶(多列映射、splitsArray、handleInvalid)+ Java 示例解读
java·算法·flink
先做个垃圾出来………17 分钟前
1611. 使整数变为 0 的最少操作次数
算法
ctrigger22 分钟前
监理工程师考试题型有哪些?4科题型+分值表
大数据·javascript·算法
YGGP25 分钟前
【Golang】LeetCode 1143. 最长公共子序列
算法·leetcode