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. 暂无。
  • 相关阅读:
    抽象工厂模式
    两个页面之间的另一种传值
    回头看看数据集合
    (kinetis K60)kinetis初体验之GPIO寄存器
    (kinetis K60)UART寄存器 串口收发数据
    (Kinetis K60) LPTMR 延时
    (Kinetis K60)WDOG看门狗测试
    (Kinetis K60) AD采集
    (Kinetis K60) PIT定时中断
    (Kinetis K60) FTM输出PWM
  • 原文地址:https://www.cnblogs.com/ACStrive/p/11599799.html
Copyright © 2011-2022 走看看