Java balanced expressions check {[()]}

后端 未结 30 1146
傲寒
傲寒 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:25

    Using switch-case for better readability and handling of other scenarios:

    import java.util.Scanner;
    import java.util.Stack;
    
    public class JavaStack
    {
        private static final Scanner scanner = new Scanner(System.in);
    
        public static void main(String[] args)
        {
            Scanner sc = new Scanner(System.in);
            while (sc.hasNext()) {
                String input = sc.next();
                System.out.println(isStringBalanced(input));
            }
            scanner.close();
    
        }
    
        private static boolean isStringBalanced(String testString)
        {
            Stack stack = new Stack();
            for (char c : testString.toCharArray()) {
                switch (c) {
                    case '[':
                    case '(':
                    case '{':
                        stack.push(c);
                        break;
                    case ']':
                        if (stack.isEmpty() || stack.pop() != '[') {
                            return false;
                        }
                        break;
                    case ')':
                        if (stack.isEmpty() || stack.pop() != '(') {
                            return false;
                        }
                        break;
                    case '}':
                        if (stack.isEmpty() || stack.pop() != '{') {
                            return false;
                        }
                        break;
                    default:
                        break;
                }
            }
            // stack has to be empty, if not, the balance was wrong
            return stack.empty();
        }
    }
    

提交回复
热议问题