【一天三道算法题】代码随想录——Day14

一. 有效的括号

题目链接:力扣

思路:无非三种情况:

                1. 左侧括号多,右侧少

                2. 左右侧一样多,该字符串属于有小括号字符串

                3. 右侧括号多,左侧少

        那么说白了就是要比较左右括号的数量,谁多,谁少,还是相等。

代码:

class Solution {
    public boolean isValid(String s) {
        Deque<Character> deque = new LinkedList<>();
        char ch;
        for (int i = 0; i<s.length(); i++) {
            //将字符串中的字符一个一个取出
            ch = s.charAt(i);
            //碰到左括号就将右括号入栈
            if(ch=='(') {
                deque.push(')');
            } else if(ch=='{') {
                deque.push('}');
            } else if(ch=='[') {
                deque.push(']');
                //若栈为空,证明一个入栈的括号都没有,该字符串根本没有括号
                //如何判断结束?这里使用了短路或 
                //因此首先栈为空,而且栈顶元素不为当前的元素 证明遍历结束了
            } else if(deque.isEmpty() || deque.peek() != ch){
                return false;
            } else {
                //若是右括号,检查是否和栈顶元素匹配
                deque.pop();
            }
        }
        //判断栈中元素是否匹配
        return deque.isEmpty();
    }
}

二. 删除字符串中的所有相邻重复项

题目链接:力扣

思路:还是扫描,跟上一道题中扫描括号的方法类似,只是从扫描括号变成了扫描单个字符。

扫到第一个就加进去,再扫到就删除,然后将元素逆序输出即可。

这里录哥的gif非常好懂,几乎是看一眼就明白了,推荐!

动态图网址:代码随想录

代码:

class Solution {
    public String removeDuplicates(String s) {
        ArrayDeque<Character> que = new ArrayDeque<>();
        char c;
        for(int i=0; i<s.length(); i++) {
            c = s.charAt(i);
            //若栈为空,且栈顶和当前元素不相等,证明没有相邻
            if(que.isEmpty() || que.peek() != c) {
                //将其压入栈内
                que.push(c);
            } else {    //若上述条件通过,证明栈顶和当前元素相等,即 相邻,将该元素弹出栈
                que.pop();
            }
        }
        //经过上述操作,剩余元素便为不重复元素,将其转换为字符串返回
        String str = "";
        while(!que.isEmpty()) {
            //通过push入栈,再通过pop出栈,实现逆序
            str = que.pop() + str;
        }
        //将字符串返回
        return str;
    }
}

三. 逆波兰式求值

题目链接:力扣

思路:遇到数字则入栈;遇到运算符则取出栈顶两个数字进行计算,并将结果压入栈中。

代码:

class Solution {
    public int evalRPN(String[] tokens) {
        Deque<Integer> que = new LinkedList<>();
        for(String s : tokens) {
            if("+".equals(s)) {
                //将刚入栈的俩元素弹出来,进行“+”运算,运算结束后再push压进栈
                que.push(que.pop() + que.pop());
            } else if("-".equals(s)) {
                que.push(-que.pop() + que.pop());
            } else if("*".equals(s)) {
                que.push(que.pop() * que.pop());
            } else if("/".equals(s)) {
                //因为除法是前面的除以后面的,所以需要交换顺序
                int temp1 = que.pop();
                int temp2 = que.pop();
                que.push(temp2 / temp1);
            } else {
                //若是数字,直接将字符串转换为int,进栈
                que.push(Integer.valueOf(s));
            }
        }
        //将计算完毕的数返回
        return que.pop();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/48616.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

行业追踪,2023-07-28

自动复盘 2023-07-28 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

图片转pdf手机版免费?这几款转换软件看看

图片转pdf手机版免费&#xff1f;将图片转换成PDF文件可以带来很多好处。首先&#xff0c;PDF文件可以更好地保护你的图片。相对于图片文件&#xff0c;PDF文件更难以编辑和改变&#xff0c;因此更适合用于存储重要的图片。其次&#xff0c;将多张图片合并成一个PDF文件可以更好…

《面试1v1》Kafka与传统消息系统区别

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

前端Vue入门-day04-用vue实现组件通信

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 组件的三大组成部分 注意点说明 组件的样式冲突 scoped data 是一个函数 组件通信 什么是组件通信 不…

手撕顺序表

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 望小伙伴们点赞&#x1f44d;收藏✨加关注哟&#x1f495;&#x1…

Redis原理篇(二)

三、Redis网络模型 3.1 用户空间和内核态空间 服务器大多都采用Linux系统&#xff0c;这里我们以Linux为例来讲解: ubuntu和Centos 都是Linux的发行版&#xff0c;发行版可以看成对linux包了一层壳&#xff0c;任何Linux发行版&#xff0c;其系统内核都是Linux。我们的应用都…

解析数据可视化工具:如何选择最合适的软件

在当今信息爆炸的时代&#xff0c;数据已成为各行各业的重要资源。为了更好地理解和分析数据&#xff0c;数据可视化成为一种必不可少的工具。市面上数据可视化工具不说上千也有上百&#xff0c;什么帆软、powerbi、把阿里datav&#xff0c;腾讯云图、山海鲸可视化等等等等&…

科技云报道:是时候全员FinOps了吗?

科技云报道原创。 在论坛上&#xff0c;国外某企业的真实案例引发了热议。一开始该企业只顾技术创新&#xff0c;积极上云&#xff0c;不顾成本。 直到有一天&#xff0c;高层介入喊停&#xff1a;“这个云不能再上了&#xff0c;成本已经远大于收益了”。该企业因为成本失控…

express编写一个简单的get接口

/01编写get接口.jsconst express require(express) const app express()// 创建路由 const useRouter require(./router/user.js) // 注册路由 app.use(/api,useRouter)app.listen(8080, (req, res) > {console.log(8080监听) }) ./02编写post接口 // 注意&#xff1a;如…

【LeetCode】141.环形链表

题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#…

百题千解计划【CSDN每日一练】计数问题(附解析+多种实现方法:Python、Java、C、C++、JavaScript、C#、go)

人要多久才能成熟!一瞬间?还是一辈子? 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工智能领域优质创作者🏆 �

C++STL库中的list

文章目录 list的介绍及使用 list的常用接口 list的模拟实现 list与vector的对比 一、list的介绍及使用 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向带头循环链表结构&#xff0c;双向带头循…

Python爬虫实例之淘宝商品页面爬取(api接口)

可以使用Python中的requests和BeautifulSoup库来进行网页爬取和数据提取。以下是一个简单的示例&#xff1a; import requests from bs4 import BeautifulSoupdef get_product_data(url):# 发送GET请求&#xff0c;获取网页内容headers {User-Agent: Mozilla/5.0 (Windows NT…

深度学习算法的计算量

文章目录 一、FLOPs与FLOPS二、参数量parameters三、Latency与FPS四、结论 一、FLOPs与FLOPS 二、参数量parameters 三、Latency与FPS 四、结论

苹果开发“Apple GPT”AI科技迎来新格局

根据彭博社的马克・古尔曼&#xff08;Mark Gurman&#xff09;报道&#xff0c;苹果内部正在开发“Apple GPT”人工智能项目&#xff0c;足以媲美 OpenAI 的 ChatGPT &#xff0c;预计明年推出。就在彭博社消息发出之后&#xff0c;苹果股价上涨了2.3%&#xff0c;市值顶峰时增…

《论文阅读》具有特殊Token和轮级注意力的层级对话理解 ICLR 2023

《论文阅读》具有特殊Token和轮级注意力的层级对话理解 前言简介问题定义模型构建知识点Intra-turn ModelingInter-turn Modeling分类前言 你是否也对于理解论文存在困惑? 你是否也像我之前搜索论文解读,得到只是中文翻译的解读后感到失望? 小白如何从零读懂论文?和我一…

摄像头m2dock(MAIX-II DOCK)

官方文档地址 https://wiki.sipeed.com/soft/maixpy3/zh/index.html 一、软件准备 1 烧录镜像软件 2 镜像 当前最近版本镜像文件 3 SDFormatter 4 Maixpy IDE 二、SD卡准备 1 格式化SD卡&#xff08;用SDFormatter&#xff09; 2 烧录 3 弹出&#xff0c;插入开发板中 出现…

多租户的低代码平台,Saas开发平台:MateCloud

简介 MateCloud是一款基于Spring Cloud Alibaba的微服务架构。目前已经整合Spring Boot 2.7.0、 Spring Cloud 2021、Spring Cloud Alibaba 2021、Spring Security Oauth2、Feign、Dubbo、JetCache、RocketMQ等&#xff0c;支持多租户的低代码平台&#xff0c;Saas平台开发套件…

「乐天世界」NFT 作品集

进入「乐天世界」NFT 作品集的迷人世界&#xff0c;这里仿佛就是乐天世界探险主题公园里充满活力的礼品店。 准备好随着想象力的飞跃而沉浸其中吧&#xff0c;因为主题公园里的普通物品已经变得非凡。沉浸在游乐园美食的魔力中&#xff0c;如香脆的玉米热狗、令人垂涎的巧克力蛋…

MQ, RocketMQ, 安装

文章说明 本文主要说明RocketMQ的几种常见的安装方式。之前在工作中也用过RocketMQ&#xff0c;但是一直用的是测试环境上的&#xff0c;也没有自己动手安装过。这次专门抽了时间学习了一下。 文章目录 文章说明参考文献安装windows安装环境要求下载配置环境变量启动注意事项 …