当前位置: 首页 > news >正文

刷题笔记day11-栈与队列2

20. 有效的括号

这个是典型的使用栈,来进行匹配。
因为栈是先进后出,所以,最近的左括号一定在栈顶。如果不是,则就是不匹配了。

func isValid(s string) bool {stack := Stack{}dict := map[byte]byte {')': '(',']': '[','}': '{',}for _, item := range []byte(s) {if leftVal, ok := dict[item]; ok {if stack.pop() != leftVal {return false}} else {stack.push(item)}}return stack.length == 0
}type Stack struct {data []bytelength int
}func (s *Stack) pop() (v byte) {if s.length < 1 {return }v = s.data[s.length-1]s.data = s.data[:s.length-1]s.length--return 
}func (s *Stack) push(v byte) {s.data = append(s.data, v)s.length++
} 

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

func removeDuplicates(s string) string {// 思路:和栈顶不等的时候,s2 := []byte(s)stack := Stack{}stack.push(s2[0])for i := 1; i < len(s2); i++ {if v := stack.top(); v != s2[i] {stack.push(s2[i])} else {stack.pop()}}return string(stack.data)
}type Stack struct {data []bytelength int
}func (s *Stack) pop() (v byte) {if s.length < 1 {return }v = s.data[s.length-1]s.data = s.data[:s.length-1]s.length--return 
}func (s *Stack) top() (v byte) {if s.length < 1 {return }v = s.data[s.length-1]return 
}func (s *Stack) push(v byte) {s.data = append(s.data, v)s.length++
} 

题目中是连续两个重复字符才删除,那么是多个重复字符如何删除呢?
可以增加一个last_char 变量,存放着上一次的结果。

s2 := []byte(s)
stack := Stack{}
stack.push(s2[0])
var lastChar = s2[0]
for i := 1; i < len(s2); i++ {v := stack.top()if v == s2[i] {stack.pop()} else if (v != lastChar) && (v != s2[i]) {// 和上一次字符相同时,不需要入栈stack.push(s2[i])}
}
return string(stack.data)

6. 逆波兰表达式求值

逆波兰表达式是一种后缀表达式,运算符号在后面,前面俩是运算数。

本质上还是使用栈来进行取值,然后运算。

import "strconv"func evalRPN(tokens []string) int {// 思路:符号就退出两个数字,然后运算既可stack := Stack{}var (s1 ints2 intresult int)for _, val := range tokens {if val == "+" || val == "-" || val == "*" || val == "/" {s2 = stack.pop()s1 = stack.pop()if val == "+" {stack.push(s1 + s2)} else if val == "-" {stack.push(s1 - s2)} else if val == "*" {stack.push(s1 * s2)} else if val == "/" {stack.push(s1 / s2)}} else {intVal, _ := strconv.Atoi(val)stack.push(intVal)}}result = stack.pop()return result
}type Stack struct {data []intlength int
}func (s *Stack) pop() (v int) {if s.length < 1 {return }v = s.data[s.length-1]s.data = s.data[:s.length-1]s.length--return 
}func (s *Stack) top() (v int) {if s.length < 1 {return }v = s.data[s.length-1]return 
}func (s *Stack) push(v int) {s.data = append(s.data, v)s.length++
} 

相关文章:

刷题笔记day11-栈与队列2

20. 有效的括号 这个是典型的使用栈&#xff0c;来进行匹配。 因为栈是先进后出&#xff0c;所以&#xff0c;最近的左括号一定在栈顶。如果不是&#xff0c;则就是不匹配了。 func isValid(s string) bool {stack : Stack{}dict : map[byte]byte {): (,]: [,}: {,}for _, it…...

ngixn的指令

Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;它可以处理静态资源、动态内容、负载均衡、反向代理和HTTP缓存等任务。本文将详细介绍在CentOS上安装和配置Nginx服务器&#xff0c;并讲解Nginx常用指令。 安装Nginx 在CentOS上安装Nginx非常简单&#xff0c;只需要执行…...

管理类联考——数学——汇总篇——知识点突破——代数——函数、方程——记忆

文章目录 考点记忆/考点汇总——按大纲 整体局部 本篇思路&#xff1a;根据各方的资料&#xff0c;比如名师的资料&#xff0c;按大纲或者其他方式&#xff0c;收集/汇总考点&#xff0c;即需记忆点&#xff0c;在通过整体的记忆法&#xff0c;比如整体信息很多&#xff0c;通常…...

2014年亚太杯APMCM数学建模大赛C题公共基础课教师专业化培养方式研究求解全过程文档及程序

2014年亚太杯APMCM数学建模大赛 C题 公共基础课教师专业化培养方式研究 原题再现 近年来&#xff0c;世界基础工业、信息产业、服务业的跨越式发展引发了大量人才需求&#xff0c;导致了职业教育的飞速发展&#xff0c;除原有专科层次高等职业教育院校外&#xff0c;大量普通…...

【广州华锐互动】VR历史古城复原:沉浸式体验古代建筑,感受千年风华!

在科技日新月异的今天&#xff0c;虚拟现实&#xff08;VR&#xff09;技术已经成为了我们生活中不可或缺的一部分。从娱乐游戏到医疗健康&#xff0c;从教育培训到房地产销售&#xff0c;VR技术的应用领域日益广泛。而近年来&#xff0c;VR技术在文化遗产保护和古迹复原方面的…...

http和https分别是什么?

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和HTTPS&#xff08;HTTP Secure&#xff09;是互联网上应用最为广泛的两类协议&#xff0c;都是用于在网络中进行数据交换。 1.HTTP&#xff1a; HTTP是一种无状态的协议&#xff0c;即服务器并不保持与客户端的连接…...

C语言--一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高

一.思路分析 这是一个简单的物理题目&#xff0c;解题思路比较明确。程序使用 for 循环来模拟球的下落和反弹过程&#xff0c;通过多次计算得到最终结果&#xff0c;最后使用 printf 函数将结果输出。 定义初始高度 height 和总共经过的米数 distance 的变量&#xff0c;初始化…...

基础知识:位运算

基础知识&#xff1a;位运算 1. 两类表达式2. 项目中用到位运算的&#x1f330; 1. 两类表达式 2. 项目中用到位运算的&#x1f330; 在一个表中增加一个字段&#xff0c;控制报餐的6个字段包括午餐、晚餐、夜餐1、夜餐2、白班、晚班。正常在表中需要增加6个字段来做开关&…...

Android菜单Menu详解

菜单资源文件通常放置在res\menu目录下&#xff0c;在创建项目时&#xff0c;默认不自动创建menu目录&#xff0c;所以需手动创建。 Android Resource Directory→ value menu 或在创建根元素为<menu></menu>标记的xml文件对自动气建眼 res→Android Resounce File…...

win10 + cmake3.17 + vs2017编译osgearth2.7.0遇到的坑

坑1&#xff1a;debug模式下生成osgEarthAnnotation时 错误&#xff1a;xmemory0(881): error C2440: “初始化”: 无法从“std::pair<const _Kty,_Ty>”转换为 to _Objty 出错位置&#xff1a;src/osgEarthFeatures/FeatureSourceIndexNode.cpp 解决办法&#xff1a; …...

【Linux网络编程_TCP/UDP_字节序_套接字 实现: FTP 项目_局域网聊天项目 (已开源) 】.md updata:23/11/05

文章目录 TCP/UDP对比端口号作用字节序字节序转换api套接字 socket实现网络通讯服务端 逻辑思路demo&#xff1a; 满血版双方通讯/残血版多方通讯 &#xff08;配合进程实现&#xff09;服务端 demo客户端 demo FTP 项目实现sever demo:client demo: 局域网多方通讯 &#xff0…...

SpringBoot日志基础

1.yml 说明&#xff1a;配置yml文件。debug、info、warn、error。 logging:level:root: debug2.指定某个包 logging:level:root: info # 设置某个包的日志级别com.forever.controller: debug 3.分组调试 logging:# 设置分组group:ebank: com.forever.controlleriservic…...

linux文章导航栏

linux文章导航栏 问价解压缩大全Linux tar 备忘清单zip文件解压缩命令全 ubuntuubuntu18.04安装教程\搜狗输入法\网络配置教程Linux静态库和动态库 shellShell脚本命令...

Adobe:受益于人工智能,必被人工智能反噬

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;Adobe(ADBE)受益于生成式人工智能的兴起&#xff0c;其一直能实现两位数的收入增长就证明了这一点。 &#xff08;2&#xff09;在生成式人工智能兴起时&#xff0c;该公司就快…...

VScode配置 github 上传代码

初始化&#xff0c;设置用户名和密码 # 设置你的 Git 用户名 git config --global user.name author# 设置你的 Git 邮箱 git config --global user.email authorgmail.com# 确保 Git 输出带有颜色 git config --global color.ui auto​# 查看 Git 配置 git list1. 初始化本地…...

mysql根据条件导出表数据(`--where=“文本“`)

本文只讲导出&#xff0c;导入可以参考不同MySQL服务的表以及库的数据迁移&#xff08;/备份&#xff09;-CSDN博客 现在先查下migration_one.table_11里有什么&#xff1a; SELECT * FROM migration_one.table_11;id name ------ -------- 12321 hehe 1321 …...

MySQL复习总结(二):进阶篇(索引)

文章目录 一、存储引擎1.1 MySQL体系结构1.2 存储引擎介绍1.3 存储引擎特点1.4 存储引擎选择 二、索引2.1 基本介绍2.2 索引结构2.3 索引分类2.4 索引语法2.5 SQL性能分析2.6 索引使用2.6.1 最左前缀法则2.6.2 范围查询2.6.3 索引失效情况2.6.4 SQL提示2.6.5 覆盖索引2.6.6 前缀…...

java APP自动化测试AppIum

一、前言 二、Appium环境搭建 2.1 JDK安装 2.2 Android SDK安装配置 2.3 模拟器安装及配置 2.4 Appium Desktop安装及使用 2.5 Appium配置连接模拟器 三、实战基本脚本编写 3.1 创建Maven项目并配置 3.2 简单Demo 四、写在最后 一、前言 随着移动互联网的发展&#xff0c;AP…...

【洛谷 P1303】A*B Problem 题解(高精度+字符串)

A*B Problem 题目描述 给出两个非负整数&#xff0c;求它们的乘积。 输入格式 输入共两行&#xff0c;每行一个非负整数。 输出格式 输出一个非负整数表示乘积。 样例 #1 样例输入 #1 1 2样例输出 #1 2提示 每个非负整数不超过 1 0 2000 10^{2000} 102000。 思路 …...

计算机网络(43)

目录 计算机网络学习 1、OSI 七层网络模型&#xff0c;你了解吗&#xff1f;具体功能有哪些&#xff1f; 2、TCP/IP四层模型&#xff1f; 3、说一下TCP的三次握手&#xff1f; 4、为什么要三次握手&#xff1f;两次行不行&#xff1f;四次呢&#xff1f; 5、为什么建立连接是三…...

从XML解析到特征提取:手把手搞定Wikipedia多模态数据集的预处理全流程

从XML解析到特征提取&#xff1a;Wikipedia多模态数据集预处理实战指南 引言 在机器学习项目中&#xff0c;数据预处理往往占据整个流程70%以上的工作量。特别是面对Wikipedia这类包含文本和图像的多模态数据集时&#xff0c;工程师需要同时处理XML文档解析、图像特征提取、跨模…...

基于Simulink的Smith预估器PID整定与延迟系统控制实验

1. 从零开始理解Smith预估控制 第一次接触Smith预估器时&#xff0c;我也被这个"时间旅行"般的概念惊艳到了。想象一下&#xff0c;你正在用热水器洗澡&#xff0c;每次调节水温都要等10秒才能感受到变化——这就是典型的纯延迟系统。Smith预估器的精妙之处在于&…...

OpenClaw语音控制扩展:gemma-3-12b-it对接Whisper实现声控自动化

OpenClaw语音控制扩展&#xff1a;gemma-3-12b-it对接Whisper实现声控自动化 1. 为什么需要语音控制智能助手&#xff1f; 去年冬天的一个深夜&#xff0c;我正蜷在沙发上修改代码&#xff0c;双手被毛毯裹得严严实实。突然需要查询某个API文档&#xff0c;却不得不挣扎着伸出…...

CATIA中Automotive BiW Fastening模块下焊点坐标高效导出与处理技巧

1. 为什么需要导出焊点坐标&#xff1f; 在汽车白车身&#xff08;BiW&#xff09;设计过程中&#xff0c;焊点坐标的精确获取是连接设计与制造的关键环节。我见过太多工程师在CATIA里一个个手动记录焊点位置&#xff0c;不仅效率低下还容易出错。其实Automotive BiW Fastening…...

STM32F103C8T6 RAM不够用?手把手教你用CAN总线实现边收边写的IAP升级(附完整代码)

STM32F103C8T6 RAM资源紧张&#xff1f;CAN总线流式IAP方案实战解析 对于使用STM32F103C8T6这类RAM资源有限的MCU开发者来说&#xff0c;实现远程固件升级(IAP)功能时常常面临内存不足的困扰。这款经典Cortex-M3芯片仅有20KB RAM&#xff0c;传统方案需要预留大量缓冲区存储完整…...

Interactive-Deep-Colorization未来发展方向:从学术研究到商业应用的完整指南

Interactive-Deep-Colorization未来发展方向&#xff1a;从学术研究到商业应用的完整指南 【免费下载链接】interactive-deep-colorization Deep learning software for colorizing black and white images with a few clicks. 项目地址: https://gitcode.com/gh_mirrors/in/…...

告别环境冲突:基于快马平台与homebrew打造团队高效统一开发环境

作为一名长期与团队协作的开发者&#xff0c;我深刻体会到环境配置不一致带来的痛苦。新同事入职要花一整天配环境&#xff0c;不同项目依赖冲突导致"在我机器上能跑"的经典问题&#xff0c;甚至同一项目组因为系统更新节奏不同而出现隐性兼容问题。最近尝试用homebr…...

【2026 CVPR】Asking like Socrates: Socrates helps VLMs understand remote sensing images

RS-EoT (Remote Sensing Evidence-of-Thought) 研究旨在解决视觉语言模型(VLM)在处理遥感图像时的“虚假推理”问题 。 文章目录 核心问题 核心思想 核心方法 A. 数据合成:SocraticAgent Data Statistics B. 训练策略:两阶段渐进式强化学习 (RL) C. 训练策略 实验验证 主要…...

YOLOv11涨点改进| TPAMI 2025顶刊 |独家创新首发、Conv改进篇| 引入LPRM局部像素关系卷积模块,提升细节表达和边界定位能力,助力小目标检测、语义分割、图像分割、图像增强有效涨点

一、本文介绍 🔥本文给大家介绍使用 LPRM局部像素关系卷积模块 改进YOLOv11网络模型,通过建模局部像素之间的关系对特征进行细化优化,使模型在特征融合或上采样阶段能够更好地恢复空间结构信息并增强区域间的上下文联系。其优势体现在能够提升细节表达和边界定位能力,增强…...

宫外孕打掉需要住院吗?术后修护核心指南

宫外孕作为妇科高发急腹症&#xff0c;不少女性存在认知误区&#xff0c;疑惑“宫外孕打掉是否需要住院”。事实上&#xff0c;宫外孕绝非普通流产&#xff0c;其处理必须住院&#xff0c;且术后修护直接影响女性后续生殖健康。本文结合行业洞察&#xff0c;围绕宫外孕住院必要…...