zoukankan      html  css  js  c++  java
  • 20. 有效的括号

    知乎ID: 码蹄疾 
    码蹄疾,毕业于哈尔滨工业大学。 
    小米广告第三代广告引擎的设计者、开发者; 
    负责小米应用商店、日历、开屏广告业务线研发;
    主导小米广告引擎多个模块重构; 
    关注推荐、搜索、广告领域相关知识;

    题目

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

    有效字符串需满足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    示例 1:
    输入: "()"
    输出: true

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

    示例 3:
    输入: "(]"
    输出: false

    示例 4:
    输入: "([)]"
    输出: false

    示例 5:
    输入: "{[]}"
    输出: true

    分析

    stack 的经典题目,大学的数据结构课第一个例子就是这个。

    Code

    class Solution {
        public boolean isValid(String s) {
            Map<Character, Character> charMap = new HashMap<>();
            charMap.put('}', '{');
            charMap.put(']', '[');
            charMap.put(')', '(');
            char [] stack = new char[s.length()];
            int top = -1;
            for (int i = 0; i < s.length(); i++) {
                if (charMap.containsValue(s.charAt(i))) {
                    stack[++top] = s.charAt(i);
                }
                if (charMap.containsKey(s.charAt(i))) {
                    if (top == -1 || stack[top--] != charMap.get(s.charAt(i))) {
                        return false;
                    }
                }
            }
            return top == -1;
        }
    }

     

    扫码关注

                   微信扫码关注更多题解!

  • 相关阅读:
    RBF高斯径向基核函数【转】
    Libsvm自定义核函数【转】
    .Net对比Java分析
    码云提交
    webapi自定义Filter
    QT4.8.5 连接数据库(读写数据)
    axure8.0激活
    photo型的object转byte[]
    select拼接
    【转】easyui $.message.alert 点击右上角的关闭按钮时,不执行定义的回调函数
  • 原文地址:https://www.cnblogs.com/acceml/p/9282032.html
Copyright © 2011-2022 走看看