Solve two string algorithm tasks
Company: Meta
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Technical Screen
Quick Answer: Solve two string algorithm tasks evaluates algorithm design, data structures, correctness, complexity, edge cases, and implementation details in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.
Minimum Parentheses Insertions to Make Valid
Constraints
- 1 <= |s| <= 100,000
- s consists only of the characters '(' and ')'
Examples
Input: ('())',)
Expected Output: 1
Explanation: One ')' is unmatched at the front context; insert a single '(' to balance, giving "(())".
Input: ('(((',)
Expected Output: 3
Explanation: Three unmatched '(' remain; each needs a closing ')'.
Hints
- Scan left to right tracking how many '(' are currently unmatched (open balance).
- Every ')' that has no open '(' to pair with forces one insertion of '(' and does not change the balance; otherwise it consumes an open '('.
- At the end, every remaining unmatched '(' needs one inserted ')'. Answer = forced '(' insertions + leftover open balance.
Shortest Covering Substring (Minimum Window)
Constraints
- 1 <= |s| <= 200,000
- 1 <= |t| <= 10,000
- s and t consist of ASCII characters
Examples
Input: ('ADOBECODEBANC', 'ABC')
Expected Output: 'BANC'
Explanation: The window "BANC" contains A, B, and C and is the shortest such window.
Input: ('a', 'a')
Expected Output: 'a'
Explanation: The single character satisfies t exactly.
Hints
- Count the required frequency of each character in t. Use a sliding window with two pointers over s.
- Expand the right pointer to include characters; track how many distinct required characters are currently satisfied ('formed').
- When all required characters are satisfied, shrink from the left to minimize the window, recording the best length, then continue scanning.