zoukankan      html  css  js  c++  java
  • 【小白刷题之路Day27】leetcode20 有效的括号

    • leetcode20 有效的括号
    给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。
    
    有效字符串需满足:
    
        左括号必须用相同类型的右括号闭合。
        左括号必须以正确的顺序闭合。
    
    注意空字符串可被认为是有效字符串。
    
    示例 1:
    
    输入: "()"
    输出: true
    
    示例 2:
    
    输入: "()[]{}"
    输出: true
    
    示例 3:
    
    输入: "(]"
    输出: false
    
    示例 4:
    
    输入: "([)]"
    输出: false
    
    示例 5:
    
    输入: "{[]}"
    输出: true
    
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/valid-parentheses
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    我的C++代码:

    class Solution {
    public:
        bool isValid(string s) {
            stack<char> char_stack;
            
            for (int i=0; i<s.size(); ++i){
                if (s[i]=='(' || s[i]=='[' || s[i]=='{'){
                    char_stack.push(s[i]);
                    continue;
                }
                if (s[i]==')' && (char_stack.empty() || char_stack.top()!='('))
                    return false;
                if (s[i]==']' && (char_stack.empty() || char_stack.top()!='['))
                    return false;
                if (s[i]=='}' && (char_stack.empty() || char_stack.top()!='{'))
                    return false;
                char_stack.pop();
            }
            if (!char_stack.empty())
                return false;
            
            return true;
        }
    };

    跟其他代码题解对比,我觉得思路与可读性不差。

    总结:

    1. 这道题属于简单题,栈的最基本最基本问题,学会了使用C++ STL 中stack使用即可。
    2. 暂无。
  • 相关阅读:
    Modernizr使用指南(转)
    使用Func<>和Action简化委托
    实现类似MVC ViewBag类型的对象
    更改服务器的SID 加入域控制器提示SID重复
    SQL SERVER 执行大于80M的SQL 脚本
    完全关闭IIS日志,包括System32下的LogFile
    MVC不用302跳转Action,内部跳转
    SHA1l加密
    获取当前时间戳
    invoke反射
  • 原文地址:https://www.cnblogs.com/ACStrive/p/11599799.html
Copyright © 2011-2022 走看看