Java balanced expressions check {[()]}

后端 未结 30 1021
傲寒
傲寒 2020-12-04 17:17

I am trying to create a program that takes a string as an argument into its constructor. I need a method that checks whether the string is a balanced parenthesized expressio

30条回答
  •  粉色の甜心
    2020-12-04 17:49

    The improved method, from @Smartoop.

    public boolean balancedParenthensies(String str) {
        List leftKeys = Arrays.asList('{', '(', '<', '[');
        List rightKeys = Arrays.asList('}', ')', '>', ']');
    
        Stack stack = new Stack<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (leftKeys.contains(c)) {
                stack.push(c);
            } else if (rightKeys.contains(c)) {
                int index = rightKeys.indexOf(c);
                if (stack.isEmpty() || stack.pop() != leftKeys.get(index)) {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
    

提交回复
热议问题