JavaScript中的解析和平衡尖括号问题

我们得到了一串尖括号,并且需要编写一个函数,在字符串的开头和结尾添加括号以使所有括号匹配。

如果每个<对应一个>,并且每个>对应一个<,则尖括号匹配。

例如-如果输入字符串是-

const str = '><<><';

输出结果

那么输出应该是-

const output = '<><<><>>';

在这里,我们在开头添加了“ <”,在末尾添加了“ >>”以平衡字符串。

到目前为止,我们将使用一个数字来计算打开的'<'标签的数量。然后,当我们遇到'>'标记时,如果当前没有打开的标记,则将'<'添加到字符串的开头(同时将打开的标记计数保持为0)。

然后,最后添加与当前打开的标签数匹配的多个'>'。

示例

为此的代码将是-

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));

输出结果

控制台中的输出将是-

><<><>>