首页 > 其他分享 >## day11 - 栈与队列part02

## day11 - 栈与队列part02

时间:2023-09-18 13:46:01浏览次数:34  
标签:return ## part02 st tokens day11 push else result

day11 - 栈与队列part02

力扣20. 有效的括号

思路: 利用栈的特性,遇见左括号就把右括号压栈,遇见右括号,就对比和栈顶元素是否相同,不同就返回false。

代码

class Solution {
public:

    stack<int> st;

    bool isValid(string s) {
        if (s.size() % 2 != 0)
        {
            return false;
        }
        for (int i = 0; i < s.size(); i++)
        {
            if (s[i] == '(') st.push(')');
            else if (s[i] == '{') st.push('}');
            else if (s[i] == '[') st.push(']');
            else if (st.empty() || st.top() != s[i]) return false;
            else st.pop();
            
        }
        return st.empty();

    }
};

力扣1047. 删除字符串中的所有相邻重复项

思路:将字符串压栈,如果字符和栈顶字符相同,就不压栈并且弹出栈顶元素。

然后输出栈里的元素到字符串,然后反转字符串。

优化,直接将字符串作为栈,开始操作。

注意string类型底层是vector

class Solution {
public:
    string removeDuplicates(string s) {
        string result;
        for (int i = 0; i < s.size(); i++)
        {
            if (result.empty() || result.back() != s[i])
            {
                result += s[i];
            }
            else
            {
                result.pop_back();
            }
        }
        return result;
    }
};

力扣150. 逆波兰表达式求值

思路:栈操作,如果遇见运算符,那么弹出前面两个元素进行运算,再把结果压栈。

代码

    int evalRPN(vector<string>& tokens) {
        stack<long long> st;
        for (int i = 0; i < tokens.size(); i++)
        {
            if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/")
            {
                //注意,比如1 2 - 弹出来是 1 - 2 ,所以要用后弹出来的放前面。
                long long num1 = st.top();
                st.pop();
                long long num2 = st.top();
                st.pop();
                if (tokens[i] == "-") st.push(num2 - num1);
                if (tokens[i] == "+") st.push(num2 + num1);
                if (tokens[i] == "*") st.push(num2 * num1);
                if (tokens[i] == "/") st.push(num2 / num1);
            }
            else
            {
                
                st.push(stoll(tokens[i]));
            }
        }
        return st.top();
    }

标签:return,##,part02,st,tokens,day11,push,else,result
From: https://www.cnblogs.com/xiaowangshu1/p/17711667.html

相关文章

  • KingbaseESV8R6延迟提交参数
    前言队列理论在我们生活中的应用随处可见,例如我们去食堂打饭需要排队,我们生活中随处可见排队的场景。在计算机领域中,性能诊断等地方使用队列理论的案例也很多。服务器硬件分为动态设备和静态设备。CPU和IO子系统属于动态设备,RAM属于静态设备,队列理论只对动态设备适用。Kingbase......
  • Nodejs 命令行调用 exec 与 spawn 差异
    Nodejs命令行调用exec与spawn差异比如在前端工程项目中Nodejs要调用命令行命令如:yarnelectron:buildexec调用yarn命令,为了能使命令行能实时打印输出正在编译的命令以异步形式调用exec使用stdout.on方式监听标准输出,并打印//打包electronconstbuildEl......
  • KingbaseESV8R6使用kbbench计算连接耗时
    前言本文讨论一下KingbaseESV8R6数据库中如何计算数据库连接耗时。有这样一个场景,不借助第三方工具,在数据库服务端计算1000个数据库连接的总耗时,并取得每个连接耗时的平均值。怎样实现呢?我们可以借助kbbench工具。这是Kingbase数据库自带的一款客户端工具。kbbench介绍kbbench......
  • KingbaseES数据库批量加载数据的最佳方法
    前言本文讨论在KingbaseES数据库服务器中批量加载数据的方法,以及空数据库中的初始数据加载和增量数据加载的最佳做法。批量加载方法以下数据加载方法按照从最耗时到最不耗时的顺序排列:1.运行单记录INSERT命令。2.在每次提交中分批成100到1000行。可以使用事务块在每次......
  • KingbaseESV8R6中查看索引常用sql
    前言KingbaseES具有丰富的索引功能,对于运行一段时间的数据库,经常需要查看索引的使用大小,使用状态等。尤其重复索引的存在,有时会因为索引过多而造成维护成本加大和减慢数据库的运行速度。下面是经常使用的查看索引的sql。1.查看表上索引个数,是否唯一,表与索引大小。SELECTCO......
  • KingbaseESV8R6全局临时表不能进行reindex操作
    背景我们经常遇到两种情况下会重建索引,reindex1、索引崩溃,由于软件或硬件问题导致索引内数据失效而不可用。2、索引膨胀,当索引膨胀会占用过多磁盘空间,reindex可以解决此问题。对于临时表和全局临时表而言,临时表可以进行reindex操作,而全局临时表不能进行此操作,原因是全局临时表......
  • vs打开项目出现“尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost:…… .要
    用把工程文件(.vcxproj文件打开找到如下代码片段 ,请将下面片段代码中的(最好用notepad++打开)<UseIIS>True</UseIIS>、<AutoAssignPort>True</AutoAssignPort>节点的值改为False<WebProjectProperties><UseIIS>True</UseIIS><AutoAssignPor......
  • yarn 出现 【 info There appears to be trouble with your network connection. Retr
    第一种解决方案#调整为taobao镜像源yarnconfigsetregistryhttps://registry.npm.taobao.org我用了没用,可以试试第二种解决方案要在项目根目录下创建后缀名为.yarnrc的文件,并设置network-timeout的值为600000,你可以按照以下步骤进行操作:打开文本编辑器,例如Note......
  • 2023-09-18 taro小程序之onGetPhoneNumber无法获取用户手机号回调?console.log没反应??==
    问题描述:一个微信登录按钮,点击获取用户手机号进而登录;按钮用的是taro框架的button组件,其中用到button的onGetPhoneNumber方法,给这个方法绑定一个事件A,用户点击获取手机号后产生回调进而做下一步的业务;问题就是事件A没有获得任何回调,仿佛onGetPhoneNumber不存在。原因:没有满足使用......
  • 【直接收藏】前端JavaScript面试100问(上)
    1、解释一下什么是闭包?闭包:就是能够读取外层函数内部变量的函数。闭包需要满足三个条件:访问所在作用域;函数嵌套;在所在作用域外被调用。优点:可以重复使用变量,并且不会造成变量污染。缺点:会引起内存泄漏使用闭包的注意点:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,......