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会很帅。

  • 相关阅读:
    laravel 资源控制器方法列表
    laravel 用户认证简单示例
    使用Faker库生成模拟数据
    js获取世界不同时区的当前时间
    html2canvas将页面内容生成图片
    canvas绘制环形进度条
    H5 实现图片上传预览
    js实现复制内容到粘贴板
    node.js创建简单服务测试请求数据
    ES6语法知识
  • 原文地址:https://www.cnblogs.com/chengxuyuanxiaowang/p/4761633.html
Copyright © 2011-2022 走看看