Decompress an encoded string
Company: C3 AI
Role: Data Scientist
Category: Coding & Algorithms
Difficulty: Medium
Interview Round: Onsite
# Decompress an encoded string
Given an encoded string, return its decoded (decompressed) form.
Use the following encoding rule:
- A positive integer \(k\) followed by a bracketed substring means the substring is repeated \(k\) times.
- Encodings can be nested.
Examples:
- Input: `"3[a]2[bc]"` → Output: `"aaabcbc"`
- Input: `"3[a2[c]]"` → Output: `"accaccacc"`
- Input: `"2[abc]3[cd]ef"` → Output: `"abcabccdcdcdef"`
Assume:
- The input is valid.
- Digits only appear as repeat counts.
Return the decoded string.
### Constraints & Assumptions
- Preserve the scope, facts, inputs, and requested outputs from the prompt above.
- If the prompt leaves a detail unspecified, state a reasonable assumption before relying on it.
- Keep the answer interview-ready: concise enough to present, but concrete enough to implement or evaluate.
### Clarifying Questions to Ask
- Clarify input sizes, value ranges, mutability, return format, and tie-breaking.
- State the target time and space complexity before coding.
- Call out edge cases such as empty inputs, duplicates, invalid values, overflow, and boundary sizes.
### What a Strong Answer Covers
- A clear algorithm with the right data structures and enough pseudocode or code-level detail to implement it.
- A correctness argument that explains why the algorithm covers all required cases.
- Time and space complexity, plus at least one alternative approach when relevant.
- Focused tests for normal cases, edge cases, and failure modes.
### Follow-up Questions
- How would the approach change if the input were streaming or too large for memory?
- What invariants would you assert in production code?
- Which tests would catch off-by-one, duplicate, or tie-breaking bugs?
Quick Answer: Decompress an encoded string 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.
Decode strings where k[substring] repeats substring k times, including nested encodings.
Constraints
- Inputs are Python literals matching the function signature.
- Return a deterministic exact-match value.
Examples
Input: ('3[a]2[bc]',)
Expected Output: 'aaabcbc'
Explanation: Simple repeated groups.
Input: ('3[a2[c]]',)
Expected Output: 'accaccacc'
Explanation: Nested encodings are decoded inside out.
Input: ('2[abc]3[cd]ef',)
Expected Output: 'abcabccdcdcdef'
Explanation: Literal suffixes are preserved.
Input: ('10[a]',)
Expected Output: 'aaaaaaaaaa'
Explanation: Multi-digit repeat counts are supported.
Hints
- Use stacks for repeat counts and previous strings.
- Build the current decoded segment until a closing bracket.