Java balanced expressions check {[()]}

后端 未结 30 1135
傲寒
傲寒 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

        import java.io.IOException;
        import java.util.ArrayList;
        import java.util.List;
        import java.util.Scanner;
        import java.util.Stack;
        public class BalancedParenthesisWithStack {
    
        /*This is purely Java Stack based solutions without using additonal 
          data structure like array/Map */
    
        public static void main(String[] args) throws IOException {
    
            Scanner sc = new Scanner(System.in);
    
            /*Take list of String inputs (parenthesis expressions both valid and 
             invalid from console*/
    
            List inputs=new ArrayList<>();
            while (sc.hasNext()) {
    
                String input=sc.next();
                inputs.add(input);
    
            }
    
            //For every input in above list display whether it is valid or 
             //invalid parenthesis expression
    
            for(String input:inputs){
    
    
    
            System.out.println("\nisBalancedParenthesis:"+isBalancedParenthesis
            (input));
            }
        }
    
        //This method identifies whether expression is valid parenthesis or not
    
        public static boolean isBalancedParenthesis(String expression){
    
            //sequence of opening parenthesis according to its precedence
             //i.e. '[' has higher precedence than '{' or '('
            String openingParenthesis="[{(";
    
            //sequence of closing parenthesis according to its precedence
            String closingParenthesis=")}]";
    
            //Stack will be pushed on opening parenthesis and popped on closing.
            Stack parenthesisStack=new Stack<>();
    
    
              /*For expression to be valid :
              CHECK :
              1. it must start with opening parenthesis [()...
              2. precedence of parenthesis  should be proper (eg. "{[" invalid  
                                                                  "[{(" valid  ) 
    
    
              3. matching pair if(  '(' => ')')  i.e. [{()}(())] ->valid [{)]not 
              */
             if(closingParenthesis.contains
             (((Character)expression.charAt(0)).toString())){
                return false;
            }else{
            for(int i=0;i

提交回复
热议问题