Skip to main content

Java Data Structures Stacks | JavaTutorial

 Syntax to create an Stack:

// Create Integer type stack
Stack < Integer > myStack = new Stack<>();

The above code create an stack named myStack which can store integers.

Some more functions which we can use with stack:


  • myStack.push(x) : Use push() to push an element into the stack.
  • myStack.pop() : To remove an element from the top of the stack, we use the pop() method.
  • myStack.peek() : The peek() method returns an object from the top of the stack.
  • myStack.empty() : To check whether a stack is empty or not, we use the empty() method.


Now, try to solve the below problem using stack :

Given a string A consisting only of ’(‘ and ’)’.

You need to find whether parantheses in A is balanced or not ,if it is balanced then print 1 else print 0.

Examples of some correctly balanced strings are: “()()”, “((()))”, “((()))”

Examples of some unbalanced strings are: “()(“, “(())”, “((“, “)(“ etc.

Problem Constraints 1 <= Number of Testcases <= 100 1 <= |A| <= 105

Input Format First line of input consist of single integer T denoting the number of testcases. Each testcase has a single line of input containing an string A.

Output Format For each testcase output a single line i.e print 1 if parantheses in string are balanced else print 0.

Example Input

Input 1:

 2
 "(()())"
 "(()"

Example Output

Output 1:

 1
 0

Example Explanation

Explanation 1:

 Testcase 1: Given string (()()) is balanced so we print 1
 Testcase 2: Given string (() is not balanced so we print 0


Solution:

import java.lang.*;
import java.util.*;

public class Main {
    public static void main(String[] args) {
        // YOUR CODE GOES HERE
        // Please take input and print output to standard input/output (stdin/stdout)
        // DO NOT USE ARGUMENTS FOR INPUTS
        // E.g. 'Scanner' for input & 'System.out' for output
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        while(n-- > 0){
            String str = sc.nextLine();
            Stack<Character> st = new Stack<Character>();
            // System.out.println("Empty "+st.empty());
            boolean flag = true;
            for(int i=0;i<str.length();i++){
                Character ch = (Character)str.charAt(i);
                // System.out.println("Char: "+ch);
                if(ch == '('){
                    st.push(ch);
                }else if(ch == ')'){
                    if(st.empty() == false && st.peek() == '('){
                        st.pop();
                    }else{
                        flag = false;
                        break;
                    }                                        
                }             
            }          
            if(flag && st.empty())  
                System.out.println(1);
            else 
                System.out.println(0);
        }
    }
}

Comments

Popular posts from this blog

Classes and Objects | Accenture TFA

  Question  1 Correct Mark 1.00 out of 1.00 Flag question Question text ___ and _____ are the access specifiers that can be applied to top level Class. Select one or more: public   protected default   private Feedback Your answer is correct. The correct answers are: default, public Question  2 Correct Mark 1.00 out of 1.00 Flag question Question text class Sample{      private double num = 100;    private int square(int a){ return a*a;    } }   public class Test{    public static void main(String args[]){   Sample obj = new Sample();   System.out.println(obj.num);  System.out.println(obj.square(10));    }   } Select one: Compile time error   Run time error Executes but no output 100 Feedback Your answer is correct. The correct answer is: Compile time error Question  3 Correct Mark 1.00 out of 1.00 Flag question Question text Choose the appropriate access specifier for the attribute value so that it can be accessed from anywhere. class Test { Choose... private protected public d

Classes and Objects, Packages | Accenture TFA

  Question  1 Correct Mark 1.00 out of 1.00 Flag question Question text State True or False When using eclipse whichever classes are needed for the present class can be imported automatically. Select one: True   False Feedback The correct answer is 'True'. Question  2 Correct Mark 1.00 out of 1.00 Flag question Question text switch(a) {     default:         System.out.println("Welcome"); } Of which data types can the variable ‘a’ be? 1. long 2. byte 3. int 4. char 5. float 6. short Select one: 3, 4 and 5 1 and 3 3 and 4 2,3, 4 and 6   Feedback Your answer is correct. The variable used in a switch statement can be a byte, short, int, char or String type only. The correct answer is:  2,3, 4 and 6 Question  3 Correct Mark 1.00 out of 1.00 Flag question Question text Predict the output.   public class Test {         public static void main(String args[])         {                     int a = 2, b = 0;              for ( ; b < 20; ++b) {                  if (b % a == 0)

Balanced Brackets

1. You are given a string exp representing an expression. 2. You are required to check if the expression is balanced i.e. closing brackets and opening brackets match up well. e.g. [(a + b) + {(c + d) * (e / f)}] -> true [(a + b) + {(c + d) * (e / f)]} -> false [(a + b) + {(c + d) * (e / f)} -> false ([(a + b) + {(c + d) * (e / f)}] -> false Input Format A string str Output Format true or false Constraints 0 <= str.length <= 100 Sample Input [(a + b) + {(c + d) * (e / f)}] Sample Output true Solution import java.io.*; import java.util.*; public class Main {     public static void main(String[] args) throws Exception {         Scanner sc = new Scanner(System.in);         String str = sc.nextLine();         int n = str.length();         Stack<Character> s = new Stack<>();         for(int i=0;i<n;i++){             char ch = str.charAt(i);             if(ch == '[')                 s.push(']');             else if(ch == '{'