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

有效字符串需满足:

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

示例 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. 阿里巴巴开源的缓存框架JetCache创建缓存
  2. python中的异常(try...except...else...finally)
  3. python 通过路径下载文件
  4. tcp传输中的序列号
  5. android应用可以访问/dev下设备节点
  6. 北京林大计算机科技应为abc哪类,北京林业大学新生入学要准备什么?
  7. 已知ABAP tcode,需要查找assign了该tcode的PFCG role
  8. 复习Java字节流_字符流使用及案例
  9. js 对象和构造函数
  10. 从计算机基础知识到机器学习第1堂课,最适合新手的5场直播来了
  11. java 集合类 *****
  12. SpringCloud Consul Config 配置中心(一)
  13. 插入…值(SELECT…FROM…)
  14. php floatval_php floatval()函数的用法详解
  15. 利用jsoup进行模拟登录
  16. Silverlight socket组件
  17. Photoshop 使用技巧
  18. java workbook.close_找不到符号Workbook.close()
  19. python独立样本t检验 图_Graphpad 分析教程 | 手把手教你玩转独立样本 t 检验
  20. 使用DOM4J解析XML文件的两种方法

热门文章

  1. matlab 游标 精度,如何在MATLAB数据光标中显示更高精度的数字?
  2. 接口测试——Fiddler使用要点——笔记整理
  3. java计算课程学分绩点_【Java爬虫】爬取南通大学教务系统成绩计算绩点
  4. halcon窗体的移动和缩放_halcon与C#联合编程之鼠标控制图片缩放,拖动,roi
  5. 认真学习系列:计算机组成原理——哈工网课笔记
  6. 亲密关系--【承担情绪】-如何让对方的情绪软着陆
  7. speak 计算机英语作文,跪求一篇英语作文 题目:论计算机的优缺点
  8. HR:不录用她,是因为她“太傻白甜了……”
  9. 从【银行销冠】化身测试工程师,小哥这样实现了人生的逆转
  10. java switch原则_Java switch case语句