awelgorithms

Build output from popped pieces

Updated

The final output is the fragment left after the last ]. Pieces come from pops, not from a second pass. Printing the stack of fragments at the end (bottom to top) is not the decode. Those are unfinished checkpoints.

What to focus on

After a well-formed decode, the checkpoint stack is empty and the current fragment is the answer. Leftover letters after a group append to that fragment.

Worked examples

done

s = "3[ab]" after last ]
  1. stack of checkpoints empty
  2. frag ababab

Result: "ababab"

unclosed

s = "3[ab"
  1. checkpoint still on the stack

Result: invalid / incomplete

concat leftover letters

s = "3[ab]c"
  1. after ] frag ababab then append c

Result: "abababc"

Try it

Write decode(s). s is a well-formed decode string. Return the current fragment after the last ]. The checkpoint stack is empty at the end. Leftover letters append to that fragment. s = \"3[ab]\" after last ] → \"ababab\". s = \"3[ab\" → invalid / incomplete. s = \"3[ab]c\" → \"abababc\".

s is a well-formed decode string. Matching brackets, positive counts. The checkpoint stack is empty at the end.