如果碰上左括号,就将对应的右括号压入栈;如果遇到右括号,就看栈顶元素是否与这个括号相同,相同的话就出栈继续遍历,不相同就说明不匹配,返回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
};

京公网安备 11010502036488号