zoukankan      html  css  js  c++  java
  • 刷题-力扣-20

    20. 有效的括号

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/valid-parentheses/
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

    给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。

    示例 1:

    输入:s = "()"
    输出:true
    

    示例 2:

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

    示例 3:

    输入:s = "(]"
    输出:false
    

    示例 4:

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

    示例 5:

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

    提示:

    • 1 <= s.length <= 104
    • s 仅由括号 '()[]{}' 组成

    题目分析

    1. 根据题目描述选择栈的原理后进先出
    2. 当遇到做括号入栈,遇到右括号出栈
    3. 如果右括号对不上左括号则无效
    4. 当循环完成如果栈不空,则表示括号无效

    代码

    class Solution {
    public:
        bool isValid(string s) {
            char tag[10001];
            int index = 0;
            for (int i = 0; i < s.length(); i++) {
                if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
                    tag[index++] = s[i];
                } else {
                    if (index == 0) return false;
                    if ((tag[index - 1] == '(' && s[i] == ')') || (tag[index - 1] == '[' && s[i] == ']') || (tag[index - 1] == '{' && s[i] == '}')) {
                        index--;
                    } else return false;
                }
            }
            if (index == 0) return true;
            else return false;
        }
    };
    

    用时19min

  • 相关阅读:
    git相关
    String,static,final
    tomcat和servlet的基本了解
    xml的相关知识
    js基础
    HTML
    Java之JDBC连接池
    Java之JDBC
    Java的内存模型
    Java的内存结构
  • 原文地址:https://www.cnblogs.com/HanYG/p/14346686.html
Copyright © 2011-2022 走看看