https://leetcode.cn/problems/valid-parentheses/description
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([])”
输出:true
示例 5:
输入:s = “([)]”
输出:false
提示:
1 <= s.length <= 104s仅由括号'()[]{}'组成
思路:栈
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;
}
}


