Validate abbreviations and brackets
Company: Meta
Role: Site Reliability Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
Quick Answer: This question evaluates proficiency in string parsing, pattern validation, and algorithmic correctness, covering abbreviation interpretation and bracket balancing while requiring careful handling of edge cases and input constraints.
Part 1: Abbreviation Validation
Constraints
- 0 <= len(word) <= 100000
- 0 <= len(abbr) <= 100000
- `word` contains only lowercase English letters
- `abbr` contains only lowercase English letters and digits
- Any numeric part of `abbr` must represent a positive integer with no leading zeros to be valid
Examples
Input: ("internationalization", "i12iz4n")
Expected Output: True
Explanation: `i` matches, `12` skips 12 letters, `i` and `z` match, `4` skips 4 letters, and `n` matches the final character.
Input: ("apple", "a2e")
Expected Output: False
Explanation: After matching `a` and skipping 2 characters, the next character in `word` is `l`, not `e`.
Hints
- Use two pointers: one for `word` and one for `abbr`.
- When you see a digit, parse the full number first, then advance the word pointer by that amount.
Part 2: Balanced Bracket Validation
Constraints
- 0 <= len(s) <= 100000
- `s` contains only the characters `(`, `)`, `[`, `]`, `{`, and `}`
Examples
Input: "()[]{}"
Expected Output: True
Explanation: Each bracket is correctly opened and closed.
Input: "([)]"
Expected Output: False
Explanation: The order is wrong: `(` opens first, but `]` tries to close `[` before `)` closes `(`.
Hints
- Use a stack to keep track of the opening brackets you have not matched yet.
- When you see a closing bracket, it must match the most recent unmatched opening bracket.