题干

LeetCode-20-有效的括号
image.png

讲解

这个题目可以记住使用栈,知道了使用栈,就可以不停的判断括号是不是匹配,最后栈不为空,就是不闭合,为空就是闭合

题解

  1. /**
  2. * 这里先用hash表存一下({[代码就不会显得这么蠢
  3. * 这样写比较容易懂,将就一下吧
  4. */
  5. public boolean isValid(String s) {
  6. if(s.length()%2 != 0){
  7. return false;
  8. }
  9. Stack<String> stringStack = new Stack<String>();
  10. String[] strings = s.split("");
  11. if("}".equals(strings[0]) || "]".equals(strings[0]) || ")".equals(strings[0])){
  12. return false;
  13. }
  14. for(String l : strings){
  15. if(stringStack.isEmpty()){
  16. stringStack.push(l);
  17. }else{
  18. if(("}".equals(l) && "{".equals(stringStack.peek()))
  19. || ("]".equals(l) && "[".equals(stringStack.peek()))
  20. || (")".equals(l) && "(".equals(stringStack.peek()))){
  21. stringStack.pop();
  22. }else{
  23. stringStack.push(l);
  24. }
  25. }
  26. }
  27. return stringStack.isEmpty();
  28. }