Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

Example 1:

Input: "()"
Output: true

Example 2:

Input: "()[]{}"
Output: true

Example 3:

Input: "(]"
Output: false

Example 4:

Input: "([)]"
Output: false

Example 5:

Input: "{[]}"
Output: true

要求判断括号是否匹配,我们用一个stack来存储,然后用map存储对应的括号序列
每次往栈里添加元素时,通过map判断是左括号[还是右括号],如果是右括号,可以通过map判断出来,就从
stack中pop出栈顶元素来和当前括号匹配,如果不匹配则说明整个序列都不匹配,如果是左括号就继续加入到stack中
class Solution {
public boolean isValid(String s) {
Stack<Character> stack=new Stack<Character>();
Map<Character,Character> map=new HashMap<Character,Character>();
map.put(')','(');
map.put('}','{');
map.put(']','['); for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(map.containsKey(c)){
char temp=stack.empty()? '#':stack.pop();
if(temp!=map.get(c)) return false;
}else stack.push(c);
}
return stack.isEmpty();
}
}

最新文章

  1. hive 调优总结
  2. cve-2015-5122漏洞分析
  3. 批量转换编码 (gbk -&gt; utf8)
  4. jquery ajax 返回值 中文时乱码或变成问号解决方法
  5. File控件选择图片的时候在Html5下马上预览
  6. link和import的区别
  7. R语言练习(二)
  8. 第19章 使用PXE+Kickstart部署无人值守安装
  9. eclipse中修改maven仓储
  10. 扫盲如何在ECLIPSE中使用条件断点
  11. 转:eclipse导入工程中文乱码问题
  12. HDU 3308 LCIS 线段树区间更新
  13. 剪切板 复制文本 ClipboardManager
  14. ioctl函数详细说明
  15. 计蒜客模拟赛D2T2 蒜头君的排序:区间逆序对(移动端点) + 树状数组
  16. 201521123042《Java程序设计》第11周学习总结
  17. centos 时钟配置
  18. python异步编程之asyncio(百万并发)
  19. C++学习札记(1)
  20. python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

热门文章

  1. oracle为IN OUT变量或OUT变量赋值时提示“表达式&#39;&#39;不能用作赋值目标”
  2. vs更改项目文件夹名称
  3. python 中文件夹的操作
  4. HDU6318-2018ACM暑假多校联合训练2-1010-Swaps and Inversions-树状数组
  5. [Swift实际操作]八、实用进阶-(10)使用Swift创建一个二叉树BinaryTreeNode
  6. time、random以及序列化模块
  7. JDBC_时间处理_Date_Time_Timestamp区别_随机日期生成
  8. SDUT OJ 数据结构实验之排序四:寻找大富翁
  9. [SCOI2009]windy数 BZOJ1026 数位dp
  10. jenkins安装maven工具