PracHub
QuestionsCoachesLearningGuidesInterview Prep

Quick Overview

Implement placeholder-based pattern matcher 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.

  • medium
  • Zillow
  • Coding & Algorithms
  • Machine Learning Engineer

Implement placeholder-based pattern matcher

Company: Zillow

Role: Machine Learning Engineer

Category: Coding & Algorithms

Difficulty: medium

Interview Round: Technical Screen

# Implement placeholder-based pattern matcher You are given: 1. A string `s` that may contain **placeholders** delimited by the `%` character. 2. A dictionary `dict` mapping keys (strings) to replacement values (strings). A **placeholder** is any substring that starts and ends with `%`, for example `%key%`. The text between the two `%` characters (here, `key`) is used as a lookup key in `dict`. Example: - `s = "a%sd%fasd%dog%sdfisan"` - `dict = { "sd": "HELLO", "dog": "CAT" }` Expected output: - `"aHELLOfasdCATsdfisan"` ### Rules - Parse `s` from left to right. - Text outside of `%...%` is copied directly to the output. - When you encounter a `%`, you start reading a key until the next `%`: - The characters between the two `%` characters form the key. - Look up this key in `dict`. - If the key exists, append `dict[key]` to the output. - If the key does **not** exist in `dict`, the function should report an **error** (for example, by returning a special error value or throwing an exception; define your choice clearly in your solution). - You may assume that `%` characters are properly paired (no unmatched `%`). - There is no escaping mechanism for `%` (every `%` starts or ends a placeholder). ### Task - Implement a function that performs this substitution according to the rules above. - Clearly specify: - The function signature in the programming language of your choice. - How errors are represented/returned when a key is missing from `dict`. - Aim for a solution that runs in linear time in the length of `s` (plus the cost of dictionary lookups). ### 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: Implement placeholder-based pattern matcher 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.

Replace %key% placeholders from left to right. Return an error object if a key is missing.

Constraints

  • Inputs are Python literals matching the function signature.
  • Return a deterministic exact-match value.

Examples

Input: ('a%sd%fasd%dog%sdfisan', {'sd':'HELLO','dog':'CAT'})

Expected Output: 'aHELLOfasdCATsdfisan'

Explanation: Prompt example.

Input: ('%x%%x%', {'x':'A'})

Expected Output: 'AA'

Explanation: Repeated placeholder.

Input: ('a%missing%', {})

Expected Output: {'error': 'missing key: missing'}

Explanation: Missing key error.

Hints

  1. Choose a representation that makes the requested operation direct.
  2. Handle empty inputs and boundary cases first.
Last updated: Jun 27, 2026

Loading coding console...

PracHub

Master your tech interviews with 8,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.

Related Coding Questions

  • Write pseudocode for a ReAct-style loop - Zillow (medium)
  • Implement k-th largest in a number stream - Zillow (medium)
  • Find max min-plus-max over all subarrays - Zillow (medium)