Description
In rich-text editors, you often need to apply multiple styles to specific portions of a string. For example, applying bold, italic, or underline to different ranges of text.
In this challenge, you’ll build a parser function that converts a string and an array of style instructions into a properly styled HTML string.
Task
Implement a function parse(styleArr, str) that:
- Takes a string strand astyleArrof[start, end, tag]instructions.
- start: starting index of the style (inclusive)
- end: ending index of the style (inclusive)
- tag: HTML tag string (- "b",- "i",- "u", etc.)
 
- Wraps the specified ranges with the corresponding HTML tags.
- Handles overlapping and nested styles correctly.
- Returns a valid HTML string that can be rendered in the browser.
Method
| Function | Description | 
|---|---|
| 
 | Returns a string with HTML tags applied according to  | 
Example
Input
const str = "Hello, world";
const styleArr = [
  [0, 2, "i"], // italicize "Hel"
  [4, 9, "b"], // bold "o, wor"
  [7, 10, "u"], // underline "worl"
];
parse(styleArr, str);
Output
<i>Hel</i>l<b>o, <u>wor</u>l</b>dExplanation
- "Hel"→ italicized
- "o, wor"→ bold
- "worl"→ underlined
- Overlapping styles are nested properly.
Expected Behavior
✅ Supports multiple styles per range
✅ Handles overlapping and nested ranges
✅ Produces valid HTML
✅ Works with empty strings and empty style arrays
Hints
Hint 1
Use an array of characters from the original string to insert opening and closing tags.
Hint 2
Iterate over styleArr and insert <tag> at start and </tag> at end.
Hint 3
Use DOMParser (or other methods) to ensure valid HTML output.
Hint 4
Pay attention to nested or overlapping ranges — insertion order matters.
