最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励
题目
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
/*** @param {string} s* @return {boolean}*/
/* 先取出s[i],1.是左括号,入栈;2.是右括号,2.1若此时栈空,则出错;2.2否则出栈顶元素,并和s[i]匹配,2.2.1若成功,栈顶出栈,2.2.2.否则报错,3.最后判断栈是否为空 */
var isValid = function(s) {//字符串s的长度为奇数时,直接返回falseif(s.length%2 ==1) return false ;//通过数组建立栈let stack = [];for(let i = 0;i<s.length;i++){let c = s[i];console.log(c)//如果为左括号就进栈if(c==='{' || c==='[' || c==='(') {stack.push(c);}else {//若为右括号,若栈空时,返回一个false;if(stack.length===0) return false ;//取到栈顶元素let s = stack[stack.length-1];//判断是否匹配,ruo匹配就出栈顶元素,可以不用接收返回结果if(s==='{'&&c==='}' || s==='['&&c===']' || s=='('&&c==')') {stack.pop();}else{return false ;}}}//遍历完所有字符串后,判断栈是否为空,若为空,即完全配对return stack.length ===0;};
我是歌谣 放弃很容易 但是坚持一定很酷