DDSA Solutions

Print Bracket Number

Time: O(n)
Space: O(n)
Advertisement

Intuition

Number each bracket pair: opening bracket gets number, closing bracket gets matching number. Stack.

Algorithm

  1. 1counter=0, stack. On open bracket: push ++counter, print counter. On close: print top, pop.

Common Pitfalls

  • Simple stack simulation. O(n). Track counter for numbering and stack for matching.
Print Bracket Number.java
Java
// Approach: Stack-based. Assign incrementing numbers to opening brackets; use stack to match closing brackets.
// Time: O(n) Space: O(n)
import java.util.ArrayList;

class Solution {
    ArrayList<Integer> bracketNumbers(String str) {
        ArrayList<Integer> ans = new ArrayList<>();
        numbers(str, ans);
        return ans;
    }

    static void numbers(String str, ArrayList<Integer> ans) {
        ArrayList<Integer> opens = new ArrayList<>();
        int n = str.length();
        int open = 0;
        int close = 0;
        for (int i = 0; i < n; i++) {
            if (str.charAt(i) == '(') {
                open++;
                opens.add(open);
                ans.add(open);
            } else if (str.charAt(i) == ')') {
                close = opens.get(opens.size() - 1);
                ans.add(close);
                opens.remove(opens.size() - 1);
            }
        }
    }
};
Advertisement
Was this solution helpful?