We are given a string of angle brackets, and we are required to write a function that add brackets at the beginning and end of the string to make all brackets match.
The angle brackets match if for every < there is a corresponding > and for every > there is a corresponding <.
For example − If the input string is −
const str = '><<><';
Output
Then the output should be −
const output = '<><<><>>';
Here, we added, '<' at the beginning and '>>' at the end to balance the string.
We will use a number that will keep count of the number of open '<' tags so far. And then, when we encounter a '>' tag, if there are no current open tags, we will add '<' to the beginning of the string (while keeping the open tag count at 0).
Then, at the end, add a number of '>'s matching the number of currently open tags.
Example
The code for this will be −
const str = '><<><'; const buildPair = (str = '') => { let count = 0; let extras = 0; for (const char of str) { if (char === '>') { if (count === 0) { extras++; } else { count−−; }; } else { count++; }; }; const leadingTags = '<'.repeat(extras); const trailingTags = '>'.repeat(count); return leadingTags + str + trailingTags; }; console.log(buildPair(str));
Output
And the output in the console will be −
><<><>>