如果碰上左括号,就将对应的右括号压入栈;如果遇到右括号,就看栈顶元素是否与这个括号相同,相同的话就出栈继续遍历,不相同就说明不匹配,返回FALSE;同样,如果遇到了右括号,而栈为空,也说明不匹配,返回FALSE;如果元素都遍历完了但是栈还不为空,就说明有多余的左括号,返回FALSE;只有在遍历完并且栈空的情况才是匹配的,返回true。

  * 
  * @param s string字符串 
  * @return bool布尔型
  */
function isValid( s ) {
    // write code here
    var result = [];
    for(var i = 0; i < s.length; i++) {
        if(s.charAt(i) == '{') {
            result.push('}');
        } else if(s.charAt(i) == '[') {
            result.push(']');
        } else if(s.charAt(i) == '(') {
            result.push(')');
        } else if(result.length == 0 || result.pop() != s.charAt(i)) {
            return false;
        }
    }
    return result.length == 0;
    
}
module.exports = {
    isValid : isValid
};