一、判断括号字符串是否有效
题目描述:
给定一个只包括 '(
',')
'字符串,判断字符串是否有效。
示例:
1.输入: "()" 输出: true
2.输入: "())" 输出:false
解题思路:
一看到这个题就想到用栈来解决,遍历字符串,遇到‘(’就入栈,遇到')'就判断下边有没有匹配的‘(’,如果有则出栈,否则无效。但是这样的话,时间复杂度和空间复杂度都是O(n),还可以优化,由于只有一种括号,所以可以用一个flag表示,遇到'('则加1,遇到')'则减1,直到最后若flag为0,则有效。这样的话时间复杂度是O(n),空间复杂度是O(1)
代码:
var longestValidParentheses = function (s) {
var n = 0;
let arr = s.split('');
console.log(arr);
arr.forEach(element => {
if (element === '(') {
n += 1;
} else {
n -= 1;
}
});
if (n === 0) {
return true;
}
return n === 0 ? true : false;
};
二、升级版:
题目描述:
给定一个包括 '('
,')'
,'{'
,'}'