给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()" 输出: true

示例 2:

输入: "()[]{}" 输出: true

示例 3:

输入: "(]" 输出: false

示例 4:

输入: "([)]" 输出: false

示例 5:

输入: "{[]}" 输出: true

解题思路:遇见匹配的问题,最好的解决方案就是Stack结构,但是JS本身是没有栈结构的,JS可以用数组来实现栈,本着学习的目的,我们自己实现一个栈结构来解决该问题。

function Stack() {this.dataStore = [];this.top = 0;  //记录栈顶位置
}
//压栈操作
Stack.prototype.push = function(element) {this.dataStore[this.top++] = element;//压入元素后将top加1
}
//出栈操作
Stack.prototype.pop = function() {return this.dataStore[--this.top];//取出元素后将top减1
}
//返回栈顶元素
Stack.prototype.peek = function() {return this.dataStore[this.top-1];
}
//返回栈的长度
Stack.prototype.length = function() {return this.top;
}
//清空栈
Stack.prototype.clear = function() {this.top = 0;
}
var isValid = function(s) {var stack = new Stack();for(var i = 0; i<s.length; i++){//碰到左括号,push右括号if(s[i] === "(") {stack.push(")");} else if(s[i] === "[") {stack.push("]");} else if(s[i] === "{") {stack.push("}");} else{//不是左括号,判断栈是否为空或栈顶元素是否等当前元素if(!stack.top || stack.peek() != s[i]){return false}else{stack.pop()}} }return !stack.top;
};

leetcode 20. 有效的括号相关推荐

  1. LeetCode 20. 有效的括号 golang(三)

    20. 有效的括号 这个题做了三次,前两次的解法现在觉得是算不得正确的. 看的多写得少 做的多总结少 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有 ...

  2. 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

    题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...

  3. LeetCode 20. 有效的括号(栈)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭 ...

  4. 【Java】LeetCode 20 有效的括号 (运用数据结构:栈 解题)

    题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 解题 ...

  5. LeetCode 20. 有效的括号(Valid Parentheses)

    栈思想 关于有效括号表达式的一个有趣属性是有效表达式的子表达式也应该是有效表达式. 整个表达式是有效的,而它的子表达式本身也是有效的.这为问题提供了一种递归结构.(栈思想) 从整体表达式中一次删除一个 ...

  6. LeetCode 20 有效的括号

    https://leetcode-cn.com/problems/valid-parentheses/ 解决方案 class Solution {public boolean isValid(Stri ...

  7. 【LeetCode】【HOT】20. 有效的括号(栈)

    [LeetCode][HOT]20. 有效的括号 文章目录 [LeetCode][HOT]20. 有效的括号 package hot;import java.util.Deque; import ja ...

  8. 有效的括号(leetcode 20)

    文章目录 1.问题描述 2.难度等级 3.热门指数 4.解题思路 5.实现示例 5.1 C++ 5.2 Golang 参考文献 1.问题描述 给定一个只包括 '(',')','{','}','[',' ...

  9. LeetCode19删除链表的倒数第N个节点20有效的括号

    维护不易,还请点赞支持,微信搜索bigsai 回复进群一起打卡. 19删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1-> ...

最新文章

  1. Dungeon Master(bfs)广度优先搜索
  2. 嵌入式系统开发方向的面试题总结
  3. ./configure 参数解析
  4. 计算机乘除法运算中部分积和余数的符号位选择与位移的关系
  5. Dijkstra-解决最短路径问题
  6. 27岁博士毕业,32岁成清华博导!黄高助理教授:DenseNet发明者
  7. Mysql优化之索引优化
  8. 全国计算机考试可以异地考吗,公务员省考可以异地考吗
  9. 教你如何用若依创建子模块详细教程
  10. java都要caps标点_Java Button.setAllCaps方法代码示例
  11. android工程怎么连手机,安卓手机怎么进工程模式 安卓手机进工程模式教程【详解】...
  12. Java程序员从笨鸟到菜鸟之(八十七)跟我学jquery(三)jquery动态创建元素和常用函数示例...
  13. nginx 504 Gateway Time-out 解决办法
  14. php data取年月,PHP-date函数 年、月、日参数详解
  15. 使用jeDate日期控件
  16. 网络工程师(软考)学习笔记3--计算机网络体系结构2
  17. java开发面试自我介绍模板_java程序员面试自我介绍范文(精选3篇)
  18. 四季清果·体内净化三部曲
  19. 音符和频率的对应关系计算
  20. 【2020-10-28】DS12C887+驱动

热门文章

  1. 后宫宛如传服务器维护,后宫宛如传完整版
  2. 有序充电matlab仿真,电动汽车有序充电策略研究
  3. idea运行maven:No URLs will be polled as dynamic configuration sources
  4. matlab用mex编译.c文件报错---“重定义;不同的基类型”、“宏重定义”等
  5. 案例 自动办公_国浩分享 | 非诉讼律师办公神器盘点
  6. mysql主库从库在同一台服务器_通过两种方式增加从库——不停止mysql服务
  7. java版本号分段比较_java 实现比较版本号功能
  8. oppo手机解锁_手机解锁新风尚,OPPO的光域屏幕指纹技术又是哪根儿葱
  9. 取消endnotes参考文献格式域的步骤_大学体悟-毕业论文格式篇
  10. chap6_2 Parallax mapping in OGRE