当前位置:   article > 正文

数据结构 栈和队列常考面试题---括号匹配问题_1195 :字符串(括号)匹配问题(数据结构,堆和栈)题目描述字符串中只含有括号 (),[],

1195 :字符串(括号)匹配问题(数据结构,堆和栈)题目描述字符串中只含有括号 (),[],

OJ链接括号匹配问题

题目描述:

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true
示例 3:

输入:s = "(]"
输出:false
示例 4:

输入:s = "([)]"
输出:false
示例 5:

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

提示:

1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成

思路:先将字符串s转换为字符数组,然后遍历字符数组,如果是左括号(、{、[ ,就把他存进栈中,如果是右括号就弹出栈顶元素,看是否匹配,匹配就继续循环直到栈为空返回true,否则返回false。

代码实现如下:

  1. package oj;
  2. import stack_quene.stack.stack.Stack;
  3. public class Num20 {
  4. public boolean isValid(String s) {
  5. Stack stack=new Stack();
  6. char[] ret=s.toCharArray();
  7. for (int i = 0; i < ret.length; i++) {
  8. char c=ret[i];
  9. if(c=='('|| c=='['|| c=='{'){
  10. stack.push(c);
  11. }else{
  12. //]
  13. if(stack.isEmpty()){
  14. return false;
  15. }
  16. char tmp= (char) stack.pop();
  17. if(c==']' && tmp!='['){
  18. return false;
  19. }
  20. if(c=='}' && tmp!='{'){
  21. return false;
  22. }
  23. if(c==')' && tmp!='('){
  24. return false;
  25. }
  26. }
  27. }
  28. return stack.isEmpty();
  29. }
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/668311
推荐阅读
相关标签
  

闽ICP备14008679号