20.有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
分析:
这是一道栈的经典问题
解法:
public class Solution
{
public bool IsValid(string s)
{
Stack<char> stack = new Stack<char>();
for (int i = 0; i < s.Length; i++)
{
//如果是左括号就压入栈
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
{
stack.Push(s[i]);
}
//如果不是左括号,栈必须不为空
else if (stack.Count() ==0 )
{
return false;
}
//如果是右括号,且栈顶元素匹配
else if ((stack.Peek() == '(' && s[i] == ')') || (stack.Peek() == '{' && s[i] == '}') || (stack.Peek() == '[' && s[i] == ']'))
{
stack.Pop();
}
else
{
return false;
}
}
if (stack.Count != 0)
return false;
return true;
}
}