当前位置:   article > 正文

数据结构之栈的应用实例(JAVA) 力扣(LeetCode) 20. 有效的括号_数据结构栈的应用案例

数据结构栈的应用案例

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

有效字符串需满足:

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

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

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

利用栈解题代码:

栈的实现代码 https://blog.csdn.net/qq_43665697/article/details/99295919

  1. package demo;
  2. import java.util.*;
  3. public class Test {
  4. public static void main(String[] args) {
  5. Stack<String> stack = new Stack<String>();
  6. Scanner sc = new Scanner(System.in);
  7. String str = sc.nextLine();
  8. int flag = 0;
  9. for (int i = 0; i < str.length(); i++) {
  10. String str1 = str.substring(i, i + 1);
  11. // 如果是左括号直接进栈
  12. if (str1.equals("{") || str1.equals("(") || str1.equals("[")) {
  13. stack.push(str1);
  14. } else {
  15. // 如果是右括号 要判断 当前栈是不是空 以及 栈顶元素是不是对应的左括号
  16. // 如果不满足说明不合法直接跳出 满足则让栈定元素出栈
  17. if (str1.equals(")")) {
  18. if (stack.getSize() > 0 && stack.getTop().equals("(")) {
  19. stack.pop();
  20. } else {
  21. flag = 1;
  22. break;
  23. }
  24. } else if (str1.equals("]")) {
  25. if (stack.getSize() > 0 && stack.getTop().equals("[")) {
  26. stack.pop();
  27. } else {
  28. flag = 1;
  29. break;
  30. }
  31. } else if (str1.equals("}")) {
  32. if (stack.getSize() > 0 && stack.getTop().equals("{")) {
  33. stack.pop();
  34. } else {
  35. flag = 1;
  36. break;
  37. }
  38. }
  39. }
  40. }
  41. // 只有当栈为空 以及 flag =0 的时候 才是有效字符串
  42. System.out.println(flag == 0 && stack.getSize() == 0);
  43. sc.close();
  44. }
  45. }

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号