题目
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。
思路
括号匹配问题一般通过栈来解决,循环读取字符串中每个字符,将需要匹配的括号入栈,之后再遇到反向括号,与栈中的括号进行比对,看是否匹配。
解答
代码语言:javascript复制 class Solution
{
public bool IsValid(string s)
{
Stack<char> stack = new Stack<char>();
char[] c = s.ToCharArray();
for(int i = 0; i < s.Length; i )
{
if(c[i]=='{' || c[i]=='[' || c[i] == '(')
{
stack.Push(c[i]);
}
else
{
if (stack.Count == 0)
{
return false;
}
char topChar = stack.Pop();
if (c[i] == '}' && topChar != '{')
return false;
if (c[i] == ']' && topChar != '[')
return false;
if (c[i] == ')' && topChar != '(')
return false;
}
}
return stack.Count == 0;
}
}