• 判断字符串是不是合法


    示例:

    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     }

    结果:

  • 相关阅读:
    NSIS 2.0界面快速入门
    [反汇编练习] 160个CrackMe之016
    [反汇编练习] 160个CrackMe之015
    [反汇编练习] 160个CrackMe之014
    [反汇编练习] 160个CrackMe之013
    Ubuntu 安装之python开发
    git 技能图
    linux 系统 权限
    Git 常用命令
    python 之virtualenv和virtualenvwrapper使用
  • 原文地址:https://www.cnblogs.com/dabu/p/12663836.html
Copyright © 2020-2023  润新知