zoukankan      html  css  js  c++  java
  • Valid Parentheses有效括号匹配。利用栈。

    问题描述:给定一个字符串,其中只包含字符‘{’,    '}',    '[',    ']',   '(',    ')'确定如果输入字符串是有效的。
    括号必须以正确的顺序排列,“()”和“()[]{ }”都是有效的,   "{",  " {]"等都是无效的。

    解题思路:利用栈,如果不是右括号就压入栈中,如果是右括号,就看前一个字符是不是匹配的左括号,如果匹配出栈,接着看后面字符,不匹配则返回false。

     1 public boolean isValid(String s) {
     2             Map<Character,Character> map = new HashMap<>();
     3             map.put('(',')');
     4             map.put('[',']');
     5             map.put('{','}');
     6             Stack<Character> stack = new Stack<>();
     7             for(int i = 0; i < s.length(); i ++)
     8             {
     9                 char curr = s.charAt(i);
    10                 if(map.keySet().contains(curr))
    11                 {
    12                     stack.push(curr);
    13                 }
    14                 //注意判断空的情况
    15                 else if(!stack.empty() && map.values().contains(curr))
    16                 {
    17                     char pre = stack.peek();
    18                     if(map.get(pre)==curr)
    19                     {
    20                         stack.pop();
    21                     }
    22                     else
    23                     {
    24                         return false;
    25                     }
    26                 }
    27                 else
    28                 {
    29                     return false;
    30                 }
    31             }
    32             return stack.empty();
    33         }
  • 相关阅读:
    Android 如何在自己的应用中模拟Home键
    ComboBox添加Item
    修复JSCRIPT
    几天没用TFS!挂了!
    简单的上传图片并生成缩略图
    上传图片时中文路径的问题
    获取DataList和Repeater里的控件
    MIME 类型列表
    STL注意
    MFC下的MessageBox使用_附带CBUTTON
  • 原文地址:https://www.cnblogs.com/masterlibin/p/5542762.html
Copyright © 2011-2022 走看看