我有一个字符串:
“5 *((6 2) – 1)”
我需要找到最深的一对括号及其内容.
“5 *((6 2) – 1)”
我需要找到最深的一对括号及其内容.
我已经google了很多,我找不到任何特定的索引.很多解决方案都找到了多少级别,以及类似的东西,但没有什么是真正有用的.我在考虑对图层进行计数,然后使用循环来解决并重复求解直到完成,但看起来这似乎很慢.
我不知道从哪里开始,所以我还没有编写任何代码.
我想要一个函数返回5,最深的括号集的字符串索引.我也需要为最深的“)”做同样的事情,因为我需要这对.例:
const deepestPair = (str) => { // Find deepest pair of parentheses } deepestPair("(2(5)4)(3)") // Returns [2,4],the indexes of the deepest open/close parentheses
解决方法
您可以检查左括号和右括号,并使用计数器获取最嵌套的索引.
const deepestPair = str => { var indices,max = 0,count = 0,last; [...str].forEach((c,i) => { if (c === '(') { last = i; count++; return; } if (c === ')') { if (count > max) { indices = [last,i]; max = count; } count--; } }); return indices; } console.log(deepestPair("(2(5)4)(3)")); // [2,4]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。