zoukankan      html  css  js  c++  java
  • LeetCode 020. 有效的括号 数据结构 栈

    地址https://leetcode-cn.com/problems/valid-parentheses/

    给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。
    
    有效字符串需满足:
    
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    
    示例 1:
    
    输入: "()"
    输出: true
    示例 2:
    
    输入: "()[]{}"
    输出: true
    示例 3:
    
    输入: "(]"
    输出: false
    示例 4:
    
    输入: "([)]"
    输出: false
    示例 5:
    
    输入: "{[]}"
    输出: true

    算法1
    括号配对 考虑使用栈就好了
    遇到左括号就入栈 遇到右括号就可以看看当前栈是否为空或者有无匹配的括号即可

    C++ 代码

    class Solution {
    public:
    
    bool isValid(string s) {
        stack<char> st;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == '(' || s[i] == '[' || s[i] == '{') {
                st.push(s[i]);
            }
            else if (s[i] == ')') {
                if (st.empty() ||  st.top() != '(') return false;
                st.pop();
            }
            else if (s[i] == ']') {
                if (st.empty() ||  st.top() != '[') return false;
                st.pop();
            }
            else if (s[i] == '}') {
                if (st.empty() ||  st.top() != '{') return false;
                st.pop();
            }
        }
        if (st.empty()) return true;
    
        return false;
    }
    
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    JS基础算法题(一)
    JS数组的迭代器方法
    使用IcoMoon制作字体图标
    CSS浮动属性
    使用hibnate向数据库写入图片对象
    hibernate_基本配置和初始化步骤
    ORM框架
    Jsp中的session
    mysql的自我复制
    分页技术
  • 原文地址:https://www.cnblogs.com/itdef/p/13500909.html
Copyright © 2011-2022 走看看