如何解决这个问题;解析和平衡尖括号“;问题(Javascript)

如何解决这个问题;解析和平衡尖括号“;问题(Javascript),javascript,algorithm,stack,Javascript,Algorithm,Stack,我正在努力解决一个我看到的(但失败了)算法问题。现在,我正在努力理解如何解决这个问题 问题: 给定一个尖括号字符串,编写一个函数,在字符串的开头和结尾添加括号,使所有括号匹配。角度括号匹配如果每一个都有一个对应的>,并且对于每个>都有一个对应的来简化事物,而不是使用一个堆栈数组,考虑只使用一个数字:到目前为止打开的代码>代码/代码标签的数量。遇到代码>时,如果没有当前打开的标记,请在字符串开头添加一个s: const进程=(str)=>{ 让openCount=0; 让额外的LeadingPe

我正在努力解决一个我看到的(但失败了)算法问题。现在,我正在努力理解如何解决这个问题

问题:
给定一个尖括号字符串,编写一个函数,在字符串的开头和结尾添加括号,使所有括号匹配。角度括号匹配如果每一个都有一个对应的>,并且对于每个>都有一个对应的

来简化事物,而不是使用一个堆栈数组,考虑只使用一个数字:到目前为止打开的代码>代码/代码标签的数量。遇到代码>时,如果没有当前打开的标记,请在字符串开头添加一个

s:

const进程=(str)=>{
让openCount=0;
让额外的LeadingPentags=0;
for(str的常量字符){
如果(字符=='>'){
如果(openCount==0){
附加引线Pentags++;
}否则{
开放计数--;
}
}否则{
openCount++;
}
}
返回“”。重复(openCount);
};
console.log('输入1:>Swift版本
供参考

//  Input: "><<><"
//  Output: "<><<><>>"

class Angles {

func addAngles(angles: String) -> String {

var openingCount = 0
var leadingOpenCounts = 0
var newAngles = ""

newAngles = angles

print("New angles \(newAngles)")

for c in newAngles {


    print("Char = \(String(c) )")

    if String(c) == ">" {

        if openingCount == 0 {
            leadingOpenCounts = leadingOpenCounts + 1
        }
        else {
            openingCount = openingCount - 1
        }

    }
    if String(c) == "<" {
        openingCount = openingCount + 1
    }

}

print("LeadingOpenCounts ***** = \(leadingOpenCounts)")
print("OpeningCount ***** = \(openingCount)")
print("Required Closing Count ***** = \(openingCount)")

for _ in 0..<leadingOpenCounts {

    newAngles = "<" + newAngles
}

for _ in 0..<openingCount {
    newAngles.append(">")
}

print(newAngles)
return newAngles
}

}

let angles = Angles()
//><<><
// ><<<>>>
angles.addAngles(angles: "><<><")
//输入:“>”{
如果openingCount==0{
LeadingPenCounts=LeadingPenCounts+1
}
否则{
openingCount=openingCount-1
}
}

如果字符串(c)="您可以保留一个计数器。从0开始,为
加1,为code>
减1。如果数字降到零以下,或者如果最终大于零,则字符串是不平衡的。@Pointy:问题不是问我输入字符串是否不平衡,这是常见的算法问题。问题是问我为了平衡输入字符串。所以,输出字符串就是正确的字符串。好吧,这似乎有点含糊不清,但我明白了。@Pointy别担心。在意识到我无法在分配的时间内得到答案后,我一字不差地记下了问题的措辞。问题的含糊不清之处在于原始作者,而不是我。:)@一定的性能…哇,你的解决方案很优雅,而且与我的想法不同。我学到了一些新东西。非常感谢。
//  Input: "><<><"
//  Output: "<><<><>>"

class Angles {

func addAngles(angles: String) -> String {

var openingCount = 0
var leadingOpenCounts = 0
var newAngles = ""

newAngles = angles

print("New angles \(newAngles)")

for c in newAngles {


    print("Char = \(String(c) )")

    if String(c) == ">" {

        if openingCount == 0 {
            leadingOpenCounts = leadingOpenCounts + 1
        }
        else {
            openingCount = openingCount - 1
        }

    }
    if String(c) == "<" {
        openingCount = openingCount + 1
    }

}

print("LeadingOpenCounts ***** = \(leadingOpenCounts)")
print("OpeningCount ***** = \(openingCount)")
print("Required Closing Count ***** = \(openingCount)")

for _ in 0..<leadingOpenCounts {

    newAngles = "<" + newAngles
}

for _ in 0..<openingCount {
    newAngles.append(">")
}

print(newAngles)
return newAngles
}

}

let angles = Angles()
//><<><
// ><<<>>>
angles.addAngles(angles: "><<><")