Markdown Header Chunks
Learn this problemProblem statement
Split a Markdown document into chunks whose text length does not exceed maxChunkSize whenever possible. Lines must remain intact.
When a new chunk starts inside a Markdown header section, prepend the active header path to that chunk. For example, if the current content is under # A and ## B, the new chunk should start with those header lines before adding the next content lines.
Return each chunk as a display string where the lines inside that chunk are joined by | .
Function
chunkMarkdown(markdown: String, maxChunkSize: int) → String[]Examples
Example 1
markdown = "# A\nshort\nlonger line\n## B\nx\ny"maxChunkSize = 20return = ["# A | short","# A | longer line","# A | ## B | x | y"]The second chunk repeats the active # A header before continuing content under that section.
Example 2
markdown = "# Guide\nalpha\nbeta"maxChunkSize = 30return = ["# Guide | alpha | beta"]The whole document fits within one chunk.
Constraints
Header lines are lines whose first non-space character is #. If a single non-header line plus its active headers is longer than maxChunkSize, keep that line in its own chunk with the active headers.