Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Given a String of parenthesis delimiters ( \'(\' and \')\' ), modify the stack a

ID: 3924669 • Letter: G

Question

  Given a String of parenthesis delimiters ( '(' and ')' ), modify the stack algorithm that checks for matching delimiters to calculate the maximum nesting level. The string may have unmatched parentheses. In that case, return -1.  Examples:  " ( ) " --> 1  " ( ( ( ) ( ) ) )" --> 3  " ( ( ( () ) ) ) " --> 4  " ( () () () ) " --> 2  " ) ) ( " --> -1  " " --> 0  Constraints on the code:  -- You may use Stack. You may use Java objects and classes for doing char stream I/O. You may not use any other Java objects and classes.  -- Note: the input may have unbalanced delimiters. You must make use of the algorithm for matching delimiters.  

Explanation / Answer

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.util.Stack;

public class MatchDelimiters {

  

   public static void main(String args[]) throws IOException

   {

       BufferedReader br = readFile();

       BufferedWriter bw = writeFile();

       String line = null;

       while( (line = br.readLine())!= null ) {

      System.out.println(line + " --> " + maxNesting(line));

      }

       br.close();

       bw.close();      

   }

  

   public static BufferedReader readFile() throws FileNotFoundException

   {

       File file = new File("input");

       return new BufferedReader(new InputStreamReader(new FileInputStream(file)));      

   }

  

   public static BufferedWriter writeFile() throws FileNotFoundException

   {

       File file = new File("output");

       return new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));

   }

  

   public static int maxNesting(String input)

   {

       int nesting = 0;

       int maxNesting = 0;

       Stack<Character> stack = new Stack<Character>();

       for(int i = 0; i < input.length(); i++)

       {

           Character c = input.charAt(i);

           if(c.charValue() == '(')

           {

               stack.push(c);

               nesting = 0;

           }              

           else if(c.charValue() == ')')

           {

               if(!stack.isEmpty())

               {

                   Character delimter = stack.pop();

                   if(delimter.charValue() == '(')

                       nesting++;

               }

              

           }

           if(nesting > maxNesting)

               maxNesting = nesting;          

       }

       return maxNesting;

   }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote