How to check if a String is balanced?

前端 未结 8 1061
逝去的感伤
逝去的感伤 2020-12-06 11:57

I want to test if an input String is balanced. It would be balanced if there is a matching opening and closing parenthesis, bracket or brace.

example:
{} bal         


        
8条回答
  •  再見小時候
    2020-12-06 12:41

    corresponding Hackrrank link: https://www.hackerrank.com/challenges/balanced-brackets/problem

    import java.util.Stack;
    
    class BalancedParenthesis {
        static String isBalanced(String s) {
            return isBalanced(s.toCharArray());
        }
    
        private static String isBalanced(final char[] chars) {
            final Stack stack = new Stack<>();
            for (char eachChar : chars) {
                if (eachChar == '{' || eachChar == '[' || eachChar == '(') {
                    stack.push(eachChar);
                } else {
                    if (stack.isEmpty()) {
                        return "NO";
                    }
                    if (correspondingCloseBracket(stack.peek()) != eachChar) {
                        return "NO";
                    }
                    stack.pop();
                }
            }
            return stack.isEmpty() ? "YES" : "NO";
        }
    
        private static char correspondingCloseBracket(final char eachChar) {
            if (eachChar == '{') {
                return '}';
            }
            if (eachChar == '[') {
                return ']';
            }
            return ')';
        }
    }
    

提交回复
热议问题