expertfunda logo Top Interview Questions Binary Tree Binary Search Tree Graph

Leetcode 20. Valid Parentheses || Stack Approach || Java Solution

Valid Parentheses

Leetcode 20. Valid Parentheses || Stack Approach

    
        class Solution {
            private HashMap charactersMappings;
            public Solution() {
              this.charactersMappings = new HashMap();
              this.charactersMappings.put(')', '(');
              this.charactersMappings.put('}', '{');
              this.charactersMappings.put(']', '[');
            }
          
            public boolean isValid(String s) {
              Stack stack = new Stack();
          
              for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
          
                // If the current character is a closing bracket.
                if (this.charactersMappings.containsKey(c)) {
          
                  // Get the top element of the stack. If the stack is empty, set a dummy value of '#'
                  char topElement = stack.empty() ? '#' : stack.pop();
          
                  // If the mapping for this bracket doesn't match the stack's top element, return false.
                  if (topElement != this.charactersMappings.get(c)) {
                    return false;
                  }
                } else {
                  // If it was an opening bracket, push to the stack.
                  stack.push(c);
                }
              }
          
              // If the stack still contains elements, then it is an invalid expression.
              return stack.isEmpty();
            }
          }