题目描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

示例1

输入

"["

返回值

false

示例2

输入

"[]"

返回值

true
import java.util.Stack;public class IsValidString {public static void main(String[] args) {String str = "main...";String sign = "([)]"; // falsesign = "{[()]}";  // true// sign = "{[()]})"; // false//sign = "{[()]}("; // falseIsValidString isValidString = new IsValidString();boolean result = isValidString.isValid(sign);System.out.println(result);}// 下面的写法更为简洁public boolean isValid (String s) {// write code hereStack<Character> stack = new Stack<Character>();for(char c:s.toCharArray()){if(c =='(')stack.push(')');else if(c =='[')stack.push(']');else if(c =='{')stack.push('}');else if(stack.empty()||stack.pop()!=c)return false;}return stack.empty();}/**** @param s string字符串* @return bool布尔型*/public boolean isValid1 (String s) {Stack stack = new Stack();if(null == s || s.length() == 1){return false;}for(int i=0;i<s.length();i++){char ch = s.charAt(i);// 如果是左括号,就入栈if(ch == '(' || ch == '[' || ch == '{' ){stack.push(ch);}else{// 如果栈为空,说明找到匹配的符号,返回falseif(stack.isEmpty()){return false;}else{char top = (char)stack.pop();if((top == '(' && ch == ')') || (top == '[' && ch == ']')  || (top == '{' && ch == '}') ){// 括号和栈顶括号匹配,继续遍历下一个括号continue;}else{// 括号和栈顶括号不匹配,直接返回falsereturn false;}}}}// 如果栈最终为空,说明括号全部匹配,返回true,否则返回falsereturn stack.isEmpty() ? true : false;}
}

常考数据结构与算法:括号序列相关推荐

  1. 常考数据结构与算法:输出二叉树的右视图

    题目描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 上图树的右视图为:{1,4,3,7} 做此题之前可以先做下面3道题: 1. 常考数据结构与算法:求二叉树的层序遍历 2.常 ...

  2. 常考数据结构与算法:求二叉树的层序遍历

    题目描述 给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历) 例如: 给定的二叉树是{3,9,20,#,#,15,7}, 该二叉树层序遍历的结果是 [ [3], [9,20], ...

  3. 常考数据结构与算法:表达式求值

    题目描述 请写一个整数计算器,支持加减乘三种运算和括号. 示例2 输入 "(2*(3-4))*5" 返回值 -10 运算符号有优先级,所以使用单调栈可以解决改问题.如下代码,效率比 ...

  4. 常考数据结构与算法:删除链表的倒数第n个节点

    题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1-& ...

  5. 常考数据结构与算法:找到字符串的最长无重复字符子串

    题目描述 给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同). 示例1 输入 [2,3,4,5] 返回值 4 示例2 输入 [2,2,3,4,3] 返回值 3 方法 ...

  6. 常考数据结构与算法:最长公共子串

    题目描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串 题目保证str1和str2的最长公共子串存在且唯一. 示例1 输入 "1AB2345CD","1 ...

  7. 常考数据结构与算法:数组中未出现的最小正整数

    参考博客 https://www.cnblogs.com/apeway/p/10764597.html 题目描述 给定一个无序数组arr,找到数组中未出现的最小正整数 例如arr = [-1, 2, ...

  8. 常考数据结构与算法:两个链表生成相加链表

    题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. 例如:链表 1 为 9->3->7,链表 ...

  9. 常考数据结构与算法:买卖股票的最好时机

    题目描述 假设你有一个数组,其中第 i 个元素是股票在第i 天的价格. 你有一次买入和卖出的机会.(只有买入了股票以后才能卖出).请你设计一个算法来计算可以获得的最大收益. 示例 1: 输入: [8, ...

最新文章

  1. 如何判断网站设计是否优质?
  2. 我用Java写了个女朋友,甚至还能跟我聊两句!?
  3. 数组|leetcode35.搜索插入位置
  4. js 条码枪扫描_年会展台 精彩不断 | 沧田:从打印到扫描录入 国产品牌从未停止...
  5. 在SQL Server中为什么不建议使用Not In子查询
  6. python3 携程_多任务(3):协程
  7. 什么是.NET Framework
  8. ROS☞通过两种方法提取.bag中的图像数据
  9. nexus和maven
  10. 数据中台(五)数据开发:数据价值提炼工厂
  11. Tableau超市案例分析
  12. 华纳云:香港服务器哪家比较好?
  13. MAC IDEA启动后卡住不动
  14. linux格式化4t硬盘分区,详解:Linux 硬盘,格式化,分区 详解
  15. for循环占用的指令周期问题
  16. 关于留言簿的补充说明
  17. python sum函数的用法
  18. 【渝粤教育】电大中专新媒体营销实务 作业 题库
  19. excel上传和下载
  20. 如何让一个函数返回多个返回值

热门文章

  1. stdafx.h头文件
  2. Python input()
  3. Unity-3d Day03
  4. CSS3的学习--实现瀑布流
  5. 黑马程序员——Java正则表达式
  6. 告别2013,迎接2014
  7. C#中的浅拷贝和深拷贝
  8. Spring中Controller层、Filter层、Interceptor层全局统一异常处理
  9. VirtualBox虚拟机导出导入实践
  10. 在vue-cli生成的项目中使用karma+chrome进行单元测试