1.3.4

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();
}

另请参阅 #

Generics 库