JavaScript趣題:成雙成對的括弧

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

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

 

發佈留言