Check Balanced Parenthesis

Given a string expression, check whether it is balanced.

  • key point:
    1. last unclosed should be closed first
  • approaches
    1. stack is one approach
    2. squeeze with two cursors
// My solution with O(n)
// [] {} () should be balanced in an expression
var parenthesis = ['(',')','{','}','[',']'];
var expression = 'ddd{[([a+++{}+]ddddb)]}';

// Make use of two cursors leftIndex and rightIndex, to get closer to the center gradually
var balancedParenthesis = function(){
    var i=0;
    var j=expression.length-1;
    var res = true;

    while(i<=j){
        var leftIndex = parenthesis.indexOf(expression[i]);
        
        if(leftIndex !== -1){
            var rightIndex = parenthesis.indexOf(expression[j]);

            if(rightIndex !== -1){
                // ')(' this is not balanced
                if(rightIndex-leftIndex==1){
                    // continue
                    // rightIndex = -1;
                    // leftIndex = -1;
                    i++;
                    j--;
                }else{
                    // Q: how to give the error index in the unbalanced expression
                    res = false;
                    break;
                }
            }else{
                j--;
            }
        }else{
            i++;
        }
    }

    return res;
}

console.log(balancedParenthesis(expression));

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,251評論 0 38
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,918評論 0 13
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,854評論 0 10
  • 我是一個理工女,文采不夠出色,我不喜歡說的太過深奧,也不喜歡太過白話,所以有時候有很多話卻不知道該如何說起。 五月...
    Aling啊閱讀 516評論 13 3
  • 根據(jù)自己的收入及開支,做一份完整的定投計劃,把能省出來的錢都有計劃的加到定投里面,不買那些目前不實用的物品,算清每...
    老葉大衛(wèi)耶格弗閱讀 230評論 0 1

友情鏈接更多精彩內容