LeetCode Logo

20. 有效的括号

https://leetcode.cn/problems/valid-parentheses/description

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

有效字符串需满足:

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

示例 1:

输入:s = “()”

输出:true

示例 2:

输入:s = “()[]{}”

输出:true

示例 3:

输入:s = “(]”

输出:false

示例 4:

输入:s = “([])”

输出:true

示例 5:

输入:s = “([)]”

输出:false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

思路:栈

C#实现:

public class Solution {
    public bool IsValid(string s) {
        // 存左括号
        Stack<char> stack = new Stack<char>();
        foreach(char c in s) {
            // 遇到左括号=>压栈
            if(c == '(' || c == '[' || c == '{') {
                stack.Push(c);
            } else {
                // 遇到右括号但是栈为空=》返回
                if(stack.Count() == 0) {
                    return false;
                }
                // 遇到右括号但栈顶元素不匹配=》返回
                if(c == ')' && stack.Peek() != '(' || c == '}' && stack.Peek() != '{' || c == ']' && stack.Peek() != '[') {
                    return false;
                }
                // 匹配=》弹出栈顶元素
                stack.Pop();
            }
        }
        return stack.Count() == 0;
    }
}

Subscribe for New Articles!

Leave a Comment

Your email address will not be published. Required fields are marked *