Valid Parentheses

Problem

Given a string s containing just the characters ’(’, ’)’, ’{’, ’}’, ’[’ and ’]’, determine if the input string is valid.

An input string is valid if:

  • Open brackets must be closed by the same type of brackets.
  • Open brackets must be closed in the correct order.
  • Every close bracket has a corresponding open bracket of the same type.

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "()[]{}"
Output: true

Example 3:

Input: s = "(]"
Output: false

Constraints:

  • 1 <= s.length <= 104
  • s consists of parentheses only ’()[]{}’.

Solution

A classic stack problem.

class Solution {
    Stack<Character> st = new Stack<Character>();

    public boolean isValid(String s) {
        for (var c : s.toCharArray()) {
            if (c == '(' || c == '[' || c == '{') {
                st.push(c);
            } else {
                if (st.isEmpty()) {
                    return false;
                }
                var t = st.pop();
                if (c == ')' && t != '(') {
                    return false;
                } else if (c == ']' && t != '[') {
                    return false;
                } else if (c == '}' && t != '{') {
                    return false;
                }
            }
        }
        return st.isEmpty();
    }
}

Recent posts from blogs that I like

Paintings of gales 2

Paintings by Millet, Winslow Homer, Monet, Caillebotte, Christian Krogh, Granville Redmond, Franz von Stuck and others.

via The Eclectic Light Company

Notes on the complex roots of unity

One of the most wonderful aspects of math is how deep we can get by studying seemingly trivial questions. Consider the roots of unity, where "unity" simply means the number 1. Basics: roots of unity for real numbers Studying the roots of unity usually begins in middle school: what is the square root...

via Eli Bendersky

Writing is no longer proof of work

Tech companies structurally depend on writing to serve as evidence, in the same way that Bitcoin depends on proof-of-work hashing. However, in the last few years, LLMs have started to undermine this practice.

How can writing be like proof-of-work? When I’m writing something at work, it’s not always ...

via Sean Goedecke