All problems
0775MediumArrayHash TableStringDepth-First SearchBreadth-First SearchGraph TheoryTopological Sort

Render A Config Template

Tracked in this browser only
Write code

Trains the technique from

LeetCode 3481Apply Substitutions

This is an original problem, written from a brief that listed the technique, the difficulty, the topics, the function shape and the input bounds — none of that problem's wording, examples, hints or editorials. The link is there so you can map your practice onto the standard set.

Same function shape, different story and different numbers.

A deployment tool renders a config template. text is the template and replacements is a list of rules; rule replacements[i] is a pair [name, body] saying that the placeholder named name stands for the string body.

A placeholder is written as a rule name wrapped in braces, for example {PORT}. Braces are used for nothing else: in text and in every body, each { opens a placeholder that the very next } closes, and the name between them is the name of exactly one rule. Rule names are distinct and are made of uppercase letters, digits and underscores.

A body may itself contain placeholders, and those must be rendered too, as must any placeholders that appear in their bodies, and so on until no braces are left. The rules come in no particular order, so a body may name a rule that is listed later or earlier, and some rules may go unused. No rule ever depends on itself, directly or through a chain of other rules, so the rendering always finishes.

Return the rendered template.

Examples

Example 1

Input
replacements = [["HOST", "db.{ZONE}.internal"], ["ZONE", "eu-west"]], text = "url=db_at_{HOST}:5432"
Output
"url=db_at_db.eu-west.internal:5432"

`{HOST}` stands for `db.{ZONE}.internal`, whose own `{ZONE}` stands for `eu-west`, so the placeholder renders as `db.eu-west.internal` and the rest of the template is copied through unchanged.

Example 2

Input
replacements = [["ROOT", "/srv"], ["LOGS", "{ROOT}/logs"]], text = "{LOGS} then {LOGS}"
Output
"/srv/logs then /srv/logs"

Here the body of the second rule names the first rule, so `{LOGS}` renders as `/srv/logs`. Both appearances of the placeholder are rendered.

Example 3

Input
replacements = [["A1", "keep"]], text = "no braces at all"
Output
"no braces at all"

The template holds no braces, so nothing is replaced and the single rule goes unused.

Constraints

  • 1 <= replacements.length <= 100
  • replacements[i].length == 2
  • 1 <= replacements[i][j].length <= 100
  • 1 <= text.length <= 1000
  • Rule names are distinct, and every placeholder names one of the rules.
  • No rule depends on itself directly or through a chain of other rules.
  • The rendered template is at most 5000 characters long.

The signature

The editor is preloaded with this. It matches the parent problem's shape, so a solution that works here transfers to a judge unchanged.

Python
def apply_substitutions(replacements: list[list[str]], text: str) -> str:
Java
public String applySubstitutions(String[][] replacements, String text)
September 7
Apply