How to check the sequence of opening and closing brackets in string?

后端 未结 5 845
醉酒成梦
醉酒成梦 2020-12-18 14:42

Need to find open and closed bracket, if the sequence of opening and closing brackets is violated, then return false.

But if don\'t revert right array to compare wit

5条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-18 15:20

    In the shortest possible, with comments for lines that are probably confusing for you.

    function check(expr){
        const holder = []
        const openBrackets = ['(','{','[']
        const closedBrackets = [')','}',']']
        for (let letter of expr) { // loop trought all letters of expr
            if(openBrackets.includes(letter)){ // if its oppening bracket
                holder.push(letter)
            }else if(closedBrackets.includes(letter)){ // if its closing
                const openPair = openBrackets[closedBrackets.indexOf(letter)] // find its pair
                if(holder[holder.length - 1] === openPair){ // check if that pair is the last element in the array
                    holder.splice(-1,1) // if so, remove it
                }else{ // if its not
                    holder.push(letter)
                    break // exit loop
                }
            }
        }
        return (holder.length === 0) // return true if length is 0, otherwise false
    }
    check('[[{asd}]]') /// true
    

提交回复
热议问题