This is my solution to challenge “Stacks: Balanced Brackets” on HackerRank. Click here to see the challenge.

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
    
    static HashMap< Character, Character> bracketsMap = new HashMap<Character, Character>();
  
    
    public static boolean isBalanced(String expression) {
        Stack<Character> st = new Stack<Character>();
        
        for(int i=0; i < expression.length();i++){
            char bracket = expression.charAt(i);
            if(!st.empty()) {
                char lastBracket = st.peek();
                if(bracketsMap.get(lastBracket) == bracket){
                    st.pop();
                }else{
                    st.push(bracket);
                }
            }else{
                st.push(bracket);
            }
        }
        if(!st.empty()){
            return false;
        }
        return true;
    }
  
    public static void main(String[] args) {
        bracketsMap.put('(',')');
        bracketsMap.put(')','(');
        bracketsMap.put('{','}');
        bracketsMap.put('}','{');
        bracketsMap.put('[',']');
        bracketsMap.put(']','[');
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        for (int a0 = 0; a0 < t; a0++) {
            String expression = in.next();
            System.out.println( (isBalanced(expression)) ? "YES" : "NO" );
        }
    }
    
}