1.3.4 #
解答 #
官方 JAVA 版本参考:Parentheses.java。
遇到左括号就入栈,遇到右括号就检查是否和栈顶的左括号匹配,如果匹配则弹栈,否则返回 false。
结束时如果栈不为空则返回 false,否则返回 true。
代码 #
var input = "[()]{}{[()()]()}";
Console.WriteLine(IsBalanced(input));
var input2 = "[(])";
Console.WriteLine(IsBalanced(input2));
static bool IsBalanced(string input)
{
var stack = new Stack<char>();
foreach (var i in input)
{
if (i == '(' || i == '[' || i == '{')
stack.Push(i);
else
{
if (stack.Peek() == '(' && i == ')')
stack.Pop();
else if (stack.Peek() == '{' && i == '}')
stack.Pop();
else if (stack.Peek() == '[' && i == ']')
stack.Pop();
else
return false;
}
}
return stack.IsEmpty();
}