251 字
1 分钟
Leetcode->有效的括号
题目
给定一个只包括 ’(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/valid-parentheses
示例1:
输入:s = ”()” 输出:true
示例2:
输入:s = ”([)]” 输出:false
解题
1. 栈
:::tip 思路
利用栈对给定字符串进行“消除”,如果匹配成功则出栈,最后只需要判断栈是和否为空
:::
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
const stack = [];
for (let i = 0; i < s.length; i++) {
if (['(', '{', '['].includes(s[i])) {
stack.unshift(s[i]);
} else if (['()', '{}', '[]'].includes(stack[0] + s[i])) {
stack.shift();
} else {
return false;
}
}
return stack.length == 0;
};
2. replace()
替换
TIP使用
replace()
替换给定字符串中的所有括号,最后判断字符串的长度即可::;
/** * @param {string} s * @return {boolean} */ var isValid = function(s) { let length = s.length / 2 for(let i=0;i<length;i++) { s= s.replace('()','').replace('[]','').replace('{}','') } return s.length == 0 };
Leetcode->有效的括号
https://blog.oceanh.top/posts/algorithm/有效的括号/