zoukankan      html  css  js  c++  java
  • 判断字符串是不是合法

    示例:

    1 输入: "(]"
    2 输出: false
    3 
    4 输入: "{[]}"
    5 输出: true

    思想:

      这里我们使用栈。

      遍历输入字符串
      如果当前字符为左半边括号时,则将其压入栈中
      如果遇到右半边括号时,分类讨论:
        1)如栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环
        2)若此时栈为空,则直接返回false
        3)若不为对应的左半边括号,反之返回false

    代码块:

     1 public static boolean isValid(String s) {
     2         Stack<Character> stack = new Stack();
     3         char[] chars = s.toCharArray();
     4         for (char a: chars) {
     5             if (a == '(' || a == '{' || a == '[') {
     6                 stack.add(a);
     7             } else {
     8                 if(stack.isEmpty())
     9                     return false;
    10                 if (a == ')' && stack.pop() != '(')
    11                     return false;
    12                 if (a == '}' && stack.pop() != '{')
    13                     return false;
    14                 if (a == ']' && stack.pop() != '[')
    15                     return false;
    16             }
    17         }
    18         return stack.isEmpty();
    19     }
    20 
    21     public static void main(String[] args) {
    22         System.out.println(isValid("[{}]"));
    23         System.out.println(isValid("((([{}])))"));
    24         System.out.println(isValid("]{}()["));
    25         System.out.println(isValid("((([]))}"));
    26         System.out.println(isValid("{{[]()[]}"));
    27     }

    结果:

  • 相关阅读:
    linux 进程间通信之pipe
    makefile详解
    makefile基础
    std::list 源代码解析
    各类编译器 allocator 底层
    oop &&GP 模板 ---> 特化和偏特化
    STL Allocator
    关联式容器
    vector::erase
    maven
  • 原文地址:https://www.cnblogs.com/dabu/p/12663836.html
Copyright © 2011-2022 走看看