zoukankan      html  css  js  c++  java
  • Leetcode复习: 堆和栈

    堆和栈应该在面试的时候会经常考吧。赶紧把做过的堆和栈的题重新复习下

    Valid Parentheses

             https://leetcode.com/problems/valid-parentheses/

             这个题的思路是这样的:

             如果只有一种括号的话,那么可以考虑 +1-1法,即遇到左括号就加1,遇到右括号就-1。如果这个值出现为负的话,则明显不成立。而现在是三种括号类型,这种方法是行不通的。因为是堆和栈专题,很自然的想到用栈来解决。因为右括号必须要和栈顶的左括号匹配上才可以。很棒的方法。想到了,高兴!

             中间出了一个bug。是因为考虑不周的原因。就是你每次判断栈顶值之前都要判断,栈是否为空。为空的时候,无法取值。在这个地方犯了个错误。

       

    class Solution {
    public:
        bool isValid(string s) {
            
            if(s=="")
                return true;
            
            int length = s.length();
            
            if(length % 2 != 0)
                return false;
                
            stack<char> sta_int; //一开始char居然写成了int了,不过leetcode居然没报错。不过想想,也是啊,不会报错。
            
            for(int i = 0; i < length; i++)
            {
                if(s[i] == '(' || s[i] == '[' || s[i] == '{')
                {
                    sta_int.push(s[i]);
                }
                else
                {
                    if( sta_int.size() == 0)
                    
                        return false;
                        
                    if(sta_int.top()=='(' && s[i] == ')')
                        sta_int.pop();
                    
                    else if(sta_int.top()=='[' && s[i] == ']') // 这里的时候一开始没弄对。上面pop完了之后到这里就可能为空了,第一遍的时候没考虑到。
                        sta_int.pop();
                    
                    else if(sta_int.top()=='{' && s[i] == '}')
                        sta_int.pop();
                }
            }
            
            if(sta_int.size() == 0)
                return true;
            else
                return false;
        }
    };

                学习答案

             变量名定义为stk会很帅。

  • 相关阅读:
    ha-wordy-Write-up
    HA: Infinity Stones-Write-up
    为什么k8s引入pod概念?
    vxlan 跨网段虚拟机迁移
    交换机配置
    Git四大组件(转)
    php-fpm
    docker容器中用户自定bridge网络与默认bridge网络之间的区别
    原型链
    'style-loader', 'css-loader'使用
  • 原文地址:https://www.cnblogs.com/chengxuyuanxiaowang/p/4761633.html
Copyright © 2011-2022 走看看