zoukankan      html  css  js  c++  java
  • Leetcode-Valid Parentheses

    Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    solution:

    1.如果左括号出现了,后面必须出现一个匹配的右括号

    2.如果没有左括号,那么必定不能有右括号

    针对1,开个栈解决

    针对2,反过来想,如果有右括号,势必要有左括号已经出现过了(与其匹配的右括号在栈顶)

    为了判断右括号,开个Hashset吧

     1     public boolean isValid(String s) {
     2         if(s== null || s.length() ==0){
     3             return true;
     4         }
     5         Stack<Byte> brackets = new Stack<Byte>();
     6         HashSet<Byte> sets = new HashSet<Byte>();
     7         sets.add((byte) ')');
     8         sets.add((byte) ']');
     9         sets.add((byte) '}');
    10         byte [] sBytes = s.getBytes();
    11         for(int i =0;i<sBytes.length;i++){
    12             if(sBytes[i] == '('){
    13                 brackets.push((byte) ')');
    14                 continue;
    15             }
    16             if(sBytes[i] == '{'){
    17                 brackets.push((byte) '}');
    18                 continue;
    19             }
    20             if(sBytes[i] == '['){
    21                 brackets.push((byte) ']');
    22                 continue;
    23             }
    24             if(sets.contains(sBytes[i])){
    25                 if(!brackets.isEmpty() && brackets.peek() == sBytes[i]){
    26                     brackets.pop();
    27                 }else{
    28                     return false;
    29                 }
    30             }
    31         }        
    32         return brackets.isEmpty();
    33     }
  • 相关阅读:
    动态规划算法-3
    动态规划算法-2
    动态规划算法-1
    滑动窗口算法-3
    央行副行长提示金融风险:地方偿债高峰期到来
    银行卡换“芯” 更要银行换心
    破解IT运维成本困境,专业化分工是妙方
    php连接mysql
    ajax原生验证用户名是否存在
    ajax跨域问题
  • 原文地址:https://www.cnblogs.com/dijkstra-c/p/3954567.html
Copyright © 2011-2022 走看看