首頁  >  文章  >  web前端  >  JavaScript趣題:成雙成對的括弧

JavaScript趣題:成雙成對的括弧

黄舟
黄舟原創
2017-02-15 14:14:351464瀏覽

先來看看一些例子,咋們就能很快明白,啥叫「成雙成對」。


validParentheses( "()" ) // => returns true

一個左括弧,一個右括弧,正好湊成一對。

下面這個就成兩對了:


validParentheses( "(())" ) // => returns true

再來個複雜點的,這叫N對:


validParentheses( "(())((()())())" ) // => returns true

下面的括號,不能叫「成雙成對」,只能說「成對」形單影只」:


validParentheses( "(" ) // => returns false

這個例子,結了兩對,但還有兩個右括弧單著:


validParentheses( ")(()))" ) // => returns false

,聽了我的介紹validParentheses函數,接受一個由括弧組成的字串,如果括弧是「成雙成對」的,則回傳true,否則回傳false。

所有的輸入字串都是非空的,而且只有左,右兩種括弧。


思路:

既然是“成雙成對”,咋們就來個“一一抵消”的做法。

先準備個空棧,碰到左括弧就入棧,碰到右括弧就吐出一個“左括弧”,兩者抵消。

等所有字元都操作完,判斷棧的情況,若棧空,則表示全部括號都抵消了,也就是「成雙成對的」。

程式碼如下:

function validParentheses(parens){
    var stack = [];
    for(var i=0;i<parens.length;i++){
        var current = parens.charAt(i);
        switch(current){
            case "(":
                stack.push(current);
                break;
            case ")":
                var ele = stack.pop();
                if(ele === void 0){
                    return false;
                }
                break;
        }
    }
    return stack.length == 0;
}


以上就是JavaScript趣題:成雙成對的括弧的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn