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

算法打卡第11天

36.有效的括号

(力扣20题)

示例 1:

**输入:**s = “()”

**输出:**true

示例 2:

**输入:**s = “()[]{}”

**输出:**true

示例 3:

**输入:**s = “(]”

**输出:**false

示例 4:

**输入:**s = “([])”

**输出:**true

提示:

  • 1 <= s.length <= 104

  • s 仅由括号 '()[]{}' 组成

  • 括号匹配是使用栈解决的经典问题。

Linux系统,系统是如何知道进入了目录呢 ,也是栈的应用

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

  • 解题思路
  1. 初步判断:如果字符串长度为奇数,直接返回false,因为合法的括号字符串长度必须是偶数。
  2. 初始化栈:定义一个栈st,用于存储右括号。
  3. 遍历字符串
    • 遇到左括号(([{),将对应的右括号()]})压入栈中。
    • 遇到右括号时,检查栈是否为空或栈顶元素是否与当前右括号匹配。如果不匹配或栈为空,返回false;否则弹出栈顶元素。
  4. 最终判断:遍历结束后,检查栈是否为空。如果栈为空,说明所有左括号都找到了对应的右括号,返回true;否则返回false

这种方法利用了栈的“后进先出”特性,确保每个左括号都能找到对应的右括号,从而高效地判断括号字符串是否合法

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。
#include <iostream>
#include <stack>
using namespace std;
class Solution
{
public:bool isValid(string s){// 如果s的长度为奇数,一定不符合要求if (s.size() % 2 != 0){return false;}// 定义栈stack<char> st;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 false,否则就return truereturn st.empty();}
};

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

给出由小写字母组成的字符串 s重复项删除操作会选择两个相邻且相同的字母,并删除它们。

s 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

提示:

  1. 1 <= s.length <= 105
  2. s 仅由小写英文字母组成。
  • 解题思路

本题目标是移除字符串中连续重复的字符。我们利用栈的特性来解决这个问题。遍历字符串的每个字符,如果栈为空或当前字符与栈顶字符不相等,则将当前字符压入栈;如果当前字符与栈顶字符相等,则弹出栈顶字符,从而移除这对重复字符。遍历结束后,栈中剩下的字符即为移除重复后的结果。由于栈是后进先出的,我们需要将结果字符串反转,最终返回处理后的字符串。

代码

#include <iostream>
#include <stack>
#include <algorithm>
using namespace std;
class Solution
{
public:string removeDuplicates(string s) {stack<char> st;for(char S: s){//  // 如果栈为空,或者当前字符s与栈顶字符不相等if(st.empty() ||  S != st.top()){st.push(S);}// 弹出栈顶字符(即移除重复的字符)else{st.pop();}     }// 定义一个空字符串,用于存储最终结果string result = "";// 将栈中元素放到result字符串汇总while(!st.empty()){result += st.top();st.pop();}//  反转字符串reverse(result.begin(), result.end());return result;}
};

相关文章:

算法打卡第11天

36.有效的括号 &#xff08;力扣20题&#xff09; 示例 1&#xff1a; **输入&#xff1a;**s “()” **输出&#xff1a;**true 示例 2&#xff1a; **输入&#xff1a;**s “()[]{}” **输出&#xff1a;**true 示例 3&#xff1a; **输入&#xff1a;**s “(]”…...

【决策分析】基于Excel的多变量敏感性分析解决方案

在Excel中实现多变量敏感性分析&#xff08;3个及以上变量&#xff09;需要结合更灵活的工具和方法&#xff0c;因为Excel内置的数据表功能仅支持最多双变量分析。以下是针对多变量场景的解决方案&#xff0c;按复杂度和实用性排序&#xff1a; 方法1&#xff1a;场景管理器 摘…...

php:5.6-apache Docker镜像中安装 gd mysqli 库 【亲测可用】

Dockerfile 代码如下&#xff1a; FROM php:5.6-apache# 使用Debian归档源 RUN echo "deb http://archive.debian.org/debian stretch main contrib non-free" > /etc/apt/sources.list && \echo "deb http://archive.debian.org/debian-security s…...

小程序跳转H5或者其他小程序

1. h5跳转小程序有两种情况 &#xff08;1&#xff09;从普通浏览器打开的h5页面跳转小程序使用wx-open-launch-weapp可以实现h5跳转小程序 <wx-open-launch-weappstyle"display:block;"v-elseid"launch-btn":username"wechatYsAppid":path…...

【AI赋能,视界升级】智微智能S134 AI OPS,重构智慧大屏未来

智慧教室中&#xff0c;教师通过电子白板&#xff0c;4K高清课件、3D教学模型同步呈现&#xff0c;后排学生也能看清画面细节&#xff0c;课堂变得趣味十足&#xff1b;智能会议室里&#xff0c;会议内容、多人云会议多屏投放依旧畅通清晰&#xff0c;会议纪要自动生成Word/PPT…...

外网访问可视化工具 Grafana (Linux版本)

Grafana 是一款强大的可视化监控指标的展示工具&#xff0c;可以将不同的数据源数据以图形化的方式展示&#xff0c;不仅通用而且非常美观。它支持多种数据源&#xff0c;如 prometheus 等&#xff0c;也可以通过插件和 API 进行扩展以满足各种需求。 本文将详细介绍如何在本地…...

ass字幕嵌入mp4带偏移

# 格式转化文件&#xff0c;包含多种文件的互相转化&#xff0c;主要与视频相关 from pathlib import Path import subprocess import random import os import reclass Utils(object):staticmethoddef get_decimal_part(x: float) -> float:s format(x, .15f) # 格式化为…...

WPF响应式UI的基础:INotifyPropertyChanged

INotifyPropertyChanged 1 实现基础接口2 CallerMemberName优化3 数据更新触发策略4 高级应用技巧4.1 表达式树优化4.2 性能优化模式4.3 跨平台兼容实现 5 常见错误排查 在WPF的MVVM架构中&#xff0c; INotifyPropertyChanged是实现数据驱动界面的核心机制。本章将深入解析属…...

JavaScript字符串方法全面指南:从基础到高级应用

在JavaScript开发中&#xff0c;字符串(String)是最常用的数据类型之一&#xff0c;用于存储和操作文本数据。JavaScript提供了丰富的内置方法来处理字符串&#xff0c;掌握这些方法能极大提高开发效率。本文将全面介绍JavaScript中的字符串方法&#xff0c;按照"先总后分…...

浅谈 JavaScript 性能优化

文章目录 概要一、代码执行优化1. 减少全局变量访问2. 避免不必要的计算3. 优化循环操作 二、内存管理优化1. 减少内存泄漏2. 对象池与内存复用 三、渲染性能优化1. 避免强制同步布局2. 减少 DOM 操作3. 优化动画与合成 四、网络加载优化1. 代码压缩与 Tree Shaking2. 按需加载…...

React从基础入门到高级实战:React 生态与工具 - 构建与部署

React 构建与部署 引言 在现代Web开发中&#xff0c;构建与部署是项目从开发到上线的关键环节。对于React开发者而言&#xff0c;掌握构建优化和部署策略不仅能提升应用的性能&#xff0c;还能确保项目的稳定性和安全性。随着React应用的复杂性不断增加&#xff0c;合理的构建…...

Kafka性能调优三剑客:深度解析buffer_memory、linger_ms和batch_size

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 持续学习&#xff0c;不断…...

5分钟学会网络服务搭建,飞凌i.MX9352 + Linux 6.1实战示例

在“万物互联”的技术浪潮下&#xff0c;网络服务已成为连接物理世界与数字世界的核心纽带&#xff0c;它不仅赋予了终端设备“开口说话”的能力&#xff0c;更构建了智能设备的开发范式。 本文就将以飞凌嵌入式OK-MX9352-C开发板&#xff08;搭载了在工业物联网领域广泛应用的…...

网络安全-等级保护(等保) 3-2-2 GB/T 28449-2019 第7章 现场测评活动/第8章 报告编制活动

################################################################################ GB/T 28449-2019《信息安全技术 网络安全等级保护测评过程指南》是规定了等级测评过程&#xff0c;是纵向的流程&#xff0c;包括&#xff1a;四个基本测评活动:测评准备活动、方案编制活…...

74道TypeScript高频题整理(附答案背诵版)

1.简述什么是TypeScript &#xff1f; TypeScript是一种由Microsoft开发和维护的开源编程语言。它是JavaScript的一个超集&#xff0c;意味着它扩展了JavaScript的功能&#xff0c;包括添加了类型系统和对ES6的新特性的支持。TypeScript的设计目标是帮助开发者捕捉代码中的错误…...

PostgreSQL 临时表空间

PostgreSQL 临时表空间 PostgreSQL 使用临时表空间来存储查询执行过程中产生的临时数据&#xff0c;与 Oracle 类似但实现方式有所不同。 一、临时表空间基本概念 PostgreSQL 的临时表空间主要用于存储&#xff1a; 排序操作&#xff08;ORDER BY、GROUP BY、DISTINCT&…...

N2语法 状態

1&#xff0c;&#xff5e;てならない  接続&#xff1a;て型  意味&#xff1a;…得不得了(强调自然产生的情感&#xff0c;可接自发动词)  例文&#xff1a;     お腹が痛くてならない。     心配でならない。     両親に会いたくてならない。&#xff08;非常…...

从Node.js到Go:如何从NestJS丝滑切换并爱上Sponge框架

引言 各位 NestJS 老司机们&#xff0c; 不得不说&#xff0c;用装饰器开发 API 简直像在键盘上跳华尔兹——Controller 转个圈&#xff0c;Get 踮个脚&#xff0c;Injectable 优雅谢幕&#xff0c;三下五除二就能搭出个像模像样的后端服务。TypeScript 的类型检查就像个贴心管…...

海思 35XX MIPI读取YUV422

1.项目背景&#xff1a; 使用海思芯片&#xff0c;接收FPGA发送的MIPI数据&#xff0c;不需要ISP处理&#xff0c;YUV图像格式为YUV422。 2.移植MIPI驱动 修改IMX347的驱动远吗&#xff0c;将I2C读写的部分注释&#xff0c;其他的不用再做修改。 int imx347_slave_i2c_init(ot…...

sass三大循环语法

for for 指令可以在限制的范围内重复输出格式&#xff0c;每次按要求&#xff08;变量的值&#xff09;对输出结果做出变动。这个指令包含两种格式&#xff1a;for $var from through &#xff0c;或者 for v a r f r o m < s t a r t > t o < e n d > &#xff…...

第1章 Redis 概述

一、Redis 简介 Redis,Remote Dictionary Server,远程字典服务,由意大利人Salvatore Sanfilippo(又名Antirez)开发,是一个使用ANSI C 语言编写&#xff64;支持网络&#xff64; 可基于内存亦可持久化的日志型&#xff64;NoSQL 开源内存数据库,其提供多种语言的API&#xff61…...

硬件工程师笔记——二极管Multisim电路仿真实验汇总

目录 1 二极管基础知识 1.1 工作原理 1.2 二极管的结构 1.3 PN结的形成 1.4 二极管的工作原理详解 正向偏置 反向偏置 multisim使用说明链接 2 二极管特性实验 2.1 二极管加正向电压 2.2 二极管加反向电压 2.3 二极管两端的电阻 2.4 交流电下二级管工作 2.5 二极…...

30V/3A,云岑CP8335B,完美替换EUP3484

1 FEATURES ● Wide Input Voltage Range: 6V ~ 30V ● Low RDS(ON) for Internal Switches (Top/Bottom): 90mΩ/65 mΩ ● 3A output current capability ● 500kHz Switching Frequency Minimize the External Components ● Internal 1.5-ms Soft-Start ● 0.6V/0.8V/0.925…...

基于大模型预测的FicatIII-IV期股骨头坏死综合治疗研究报告

目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究意义和创新点 二、FicatIII-IV 期股骨头坏死概述 2.1 疾病定义与分期 2.2 病因与病理机制 2.3 临床症状与诊断方法 三、大模型预测原理与方法 3.1 大模型简介 3.2 数据收集与预处理 3.3 模型训练与优…...

promptfoo:让语言模型评测不再“靠感觉”——一站式 LLM 自动化测评神器深度解读

大家好&#xff0c;这里是你们喜闻乐见、永远不低调的 AI 技术博主。这篇分享&#xff0c;我要隆重介绍一个我愿称之为“LLM 测试自动化福音”的神器——promptfoo。 如果你做 LLM&#xff08;大模型&#xff09;落地开发&#xff0c;调教 prompt 拼死拼活&#xff0c;一上线用…...

LINUX安装运行jeelowcode后端项目(idea启动)

参考 LINUX安装运行jeelowcode后端项目&#xff08;命令行&#xff09;-CSDN博客 IntelliJ IDEA下载地址&#xff08;社区版、付费版&#xff09;-CSDN博客 软件已安装好&#xff0c;数据库也初始化完毕。 步骤1&#xff1a;打开项目目录步骤2&#xff1a;配置JDK步骤3&…...

硬件I2C和软件I2C的区别

硬件I2C和软件I2C的区别 一、硬件I2C 1、硬件IC的局限性及学习意义 尽管硬件IC外设在STM32等微控制器中提供了标准化的通信支持&#xff0c;但在实际应用中&#xff0c;其稳定性可能存在问题。例如&#xff0c;某些情况下外设会因事件检测异常而进入死锁状态&#xff0c;仅能…...

单元测试报错

报错信息如下所示&#xff1a; 五月 30, 2025 5:35:44 下午 org.junit.vintage.engine.descriptor.RunnerTestDescriptor warnAboutUnfilterableRunner 警告: Runner org.junit.internal.runners.ErrorReportingRunner (used on class redis.demo.RedisTemplateTest) does not…...

AWS WAF设置IP白名单

目标 设置一个组白名单IP地址&#xff0c;当发现是这些IP地址发过来的请求后&#xff0c;WAF自动放行。 创建IP集 打开WAF页面&#xff0c;开始IP集创建如下图&#xff1a; 设置ip集&#xff0c;如下图&#xff1a; aws waf acl配置白名单 找到Web ACL&#xff0c;开始在…...

智能门禁的项目

项目需求 矩阵键盘输入密码&#xff0c;正确开锁&#xff0c;错误提示&#xff0c;三次错误后蜂鸣器响三秒&#xff1b;按下#号确认输入&#xff0c;按下*号修改密码&#xff1b;密码保存在W25Q128里&#xff1b;OLED屏幕显示信息。 硬件清单 矩阵键盘OLED显示屏继电器蜂鸣器…...