• LeetCode--020--括号匹配(java版)


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

    有效字符串需满足:

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

    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

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

    示例 3:

    输入: "(]"
    输出: false
    

    示例 4:

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

    示例 5:

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

    low low的传统解法。。。

     1 class Solution {
     2     public boolean isValid(String s) {
     3         Stack<Character> stack = new Stack();
     4         for (int i = 0;i < s.length();i++){
     5             switch(s.charAt(i)){    
     6                 case '(':
     7                     stack.push('(');
     8                     break;
     9                 case '[':
    10                     stack.push('[');
    11                     break;
    12                 case '{':
    13                     stack.push('{');
    14                     break;
    15                 case ')':
    16                     if(stack.empty()){
    17                         return false;
    18                     }else if(stack.pop() != '('){
    19                         return false;
    20                     }
    21                     break;
    22                 case ']':
    23                     if(stack.empty()){
    24                         return false;
    25                     }else if(stack.pop() != '['){
    26                         return false;
    27                     }
    28                     break;
    29                 case '}':
    30                     if(stack.empty()){
    31                         return false;
    32                     }else if(stack.pop() != '{'){
    33                         return false;
    34                     }
    35                     break;    
    36             }
    37         }
    38         if(!stack.empty()){
    39             return false;
    40         }
    41         return true;
    42     }
    43 }

    sth update

     1 class Solution {
     2     public boolean isValid(String s) {
     3         Stack<Character> stack = new Stack();
     4         for(Character ch : s.toCharArray()){
     5             if(ch=='{'){
     6                 stack.push('}');
     7             }else if(ch == '('){
     8                 stack.push(')');
     9             }else if(ch == '['){
    10                 stack.push(']');
    11             }else{
    12                 if(stack.isEmpty() || stack.pop() != ch){
    13                     return false;
    14                 }
    15             }
    16         }
    17         return stack.isEmpty();
    18     }
    19 }

    2019-03-03 11:14:44

  • 相关阅读:
    /usr/sbin/sshd报错:Missing privilege separation directory: /run/sshd
    docker挂载GPU
    docker修改docker image存储目录
    ubuntu卸载显卡驱动,CUDA
    linux之删除用户
    Python之pathlib用法
    linux修改文件权限
    Pytorch检查cuda
    PyCharm: EOF while reading packet报错
    ubuntu20.04换源
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/10464385.html
Copyright © 2020-2023  润新知