(LeetCode 每日一题)3170. 删除星号以后字典序最小的字符串(贪心+栈)
题目:3170. 删除星号以后字典序最小的字符串
思路:贪心+栈,时间复杂度0(n)。
对于每一个‘ * ’,优先选最右边的最小字符,才会使最终得到的字符串最小。
用栈,来记录每个字符的位置下标。细节看注释。
C++版本:
class Solution {
public:string clearStars(string s) {// 栈,记录已遍历过的每个字符的下标stack<int> st[26];for(int i=0;i<s.size();i++){if(s[i]!='*'){st[s[i]-'a'].push(i);continue;}// 贪心,找到最小的字符来删除for(auto &x:st){if(x.size()>0){// 标记为'*',表示删除// 选最大的下标值,也就是最后入栈的s[x.top()]='*';x.pop();break;}}}//剩余非'*'的就是答案string ans="";for(int i=0;i<s.size();i++){if(s[i]=='*') continue;ans.push_back(s[i]);}return ans;}
};
JAVA版本:
class Solution {public String clearStars(String s) {List<Integer>[] st=new ArrayList[26];Arrays.setAll(st,i->new ArrayList<>());char[] c=s.toCharArray();for(int i=0;i<c.length;i++){if(c[i]!='*'){st[c[i]-'a'].add(i);continue;}for(var x:st){if(x.size()>0){c[x.removeLast()]='*';break;}}}int top=-1;for(int i=0;i<c.length;i++){if(c[i]=='*') continue;c[++top]=c[i];}return new String(c,0,top+1);}
}
Go版本:
func clearStars(s string) string {c:=[]byte(s)st:=make([][]int, 26)for i:=0;i<len(s);i++ {if s[i]!='*' {st[s[i]-'a']=append(st[s[i]-'a'],i)continue}for j,x:= range st {if m:=len(x); m>0 {c[x[m-1]]='*'st[j]=x[:m-1]break}}}var ans []bytefor i:=0;i<len(s);i++ {if c[i]!='*' {ans=append(ans,c[i])}}return string(ans)
}
相关文章:

(LeetCode 每日一题)3170. 删除星号以后字典序最小的字符串(贪心+栈)
题目:3170. 删除星号以后字典序最小的字符串 思路:贪心栈,时间复杂度0(n)。 对于每一个‘ * ’,优先选最右边的最小字符,才会使最终得到的字符串最小。 用栈,来记录每个字符的位置下标。细节看注释。 C版本…...
Protobuf 中的类型查找规则
a.proto syntax "proto2"; //protoc3生成代码兼容proto2语法 package pkgA; message Example { }ba.proto package pkgB.pkgA; message Example { }b.proto syntax "proto3"; //protoc3生成代码兼容proto2语法 package pkgB; import "test1/a.pr…...
Python项目中添加环境配置文件
在Python项目中添加配置文件有多种方式,每种方式对应不同的依赖包和读取方法。以下是 7种主流配置管理方案,包含安装命令、配置示例和变量读取方法: 1. .env 文件(推荐简单项目) 依赖包: python-dotenv pip install …...
【区块链基础】区块链的 Fork(分叉)深度解析:原理、类型、历史案例及共识机制的影响
区块链的 Fork(分叉)全面解析:原理、类型、历史案例及共识机制的影响 在区块链技术的发展过程中,Fork(分叉)现象是不可避免且极具影响力的一个环节。理解区块链分叉的形成原因、具体表现以及共识机制对分叉的作用,对于深入把握区块链技术架构及其治理机制至关重要。 本…...
IOS 打包账号发布上传和IOS Xcode证书配置
xcode下载 https://developer.apple.com/download/all/ App发布 https://appstoreconnect.apple.com/ https://appstoreconnect.apple.com/teams/83ba877c-af24-4fa5-aaf2-e9b9b6066e82/apps/6473148620/testflight/groups/eb983352-b2e2-4c29-bbb7-071bf7287795 https://devel…...

使用 HTML + JavaScript 实现文章逐句高亮朗读功能
在这个信息爆炸的时代,我们每天都要面对大量的文字阅读。无论是学习、工作还是个人成长,阅读都扮演着至关重要的角色。然而,在快节奏的生活中,我们往往难以找到足够的安静时间专注于阅读。本文用 HTML JavaScript 实现了一个基于…...
【CSS-4】掌握CSS文字样式:从基础到高级技巧
文字是网页内容的核心载体,良好的文字样式设计不仅能提升可读性,还能增强网站的整体视觉效果。本文将全面介绍CSS中控制文字样式的各种属性和技巧,帮助您打造专业级的网页排版。 1. 基础文字属性 1.1 字体设置 (font-family) body {font-f…...

双碳时代,能源调度的难题正从“发电侧”转向“企业侧”
安科瑞刘鸿鹏 摘要 在“双碳”战略和能源结构转型的大背景下,企业储能电站逐步成为提升能源利用效率、增强用能韧性的重要手段。随着系统规模扩大与运行复杂度提升,如何对光伏、储能、负荷等流进行实时调控,成为智慧用能的关键。ACCU100微…...

3. 简述node.js特性与底层原理
😺😺😺 一、Node.js 底层原理(简化版) Node.js 是一个 基于 Chrome V8 引擎构建的 JavaScript 运行时,底层核心由几部分组成: 组成部分简要说明 1.V8 引擎 将 JS 编译成机器码执行࿰…...

OpenCV CUDA模块图像处理------创建一个模板匹配(Template Matching)对象函数createTemplateMatching()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 创建一个用于在 GPU 上执行模板匹配的 TemplateMatching 对象。 该函数返回一个指向 TemplateMatching 的智能指针(Ptr)…...

【Kubernetes】K8s 之 ETCD - 恢复备份
ETCD 是一个高可用的分布式键值存储,常用于存储配置信息和服务发现等。当系统出现故障或数据损坏时,能够快速恢复成先前的状态是维护系统稳定性的关键。ETCD 提供了备份和恢复功能,以确保数据持久性和可靠性,一起来看看如何操作吧…...
CMS、G1、ZGC、Shenandoah 的全面对比
大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! Java 垃圾回收器从最早的 Serial 一步步演化,如今已经有了多款高性能、低延迟的 GC 垃圾收集器可选,比如 CMS、G1、…...

RabbitMQ 学习
MQ 的相关概念 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。…...

如何轻松、安全地管理密码(新手指南)
很多人会为所有账户使用相同、易记的密码,而且常常多年不换。虽然这样方便记忆,但安全性非常低。 您可能听说过一些大型网站的信息泄露事件,同样的风险也可能存在于您的WordPress网站中。如果有不法分子获取了访问权限,您的网站和…...

AWS App Mesh实战:构建可观测、安全的微服务通信解决方案
摘要:本文详解如何利用AWS App Mesh统一管理微服务间通信,实现精细化流量控制、端到端可观测性与安全通信,提升云原生应用稳定性。 一、什么是AWS App Mesh? AWS App Mesh 是一种服务网格(Service Mesh)解…...

9.axios底层原理,和promise的对比(2)
😺😺😺 和promise的对比 完全可以直接使用 Promise 来发 HTTP 请求,比如用原生 fetch Promise 就可以实现网络请求功能👇 ✅ 用 Promise fetch 的写法(原生) fetch(‘https://api.example.c…...

用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战
用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战 引言 在Web交互设计中,粒子动画因其动态美感和视觉吸引力被广泛应用于节日特效、情感化界面等场景。本文将通过实战案例,详细讲解如何使用HTML5 Canvas和JavaScript实现一个「心之律…...
Gartner《How to Create and Maintain a Knowledge Base forHumans and AI》学习报告
核心观点 本研究是一份 Gartne关于如何创建和维护面向人类与人工智能(AI)的知识库的研究报告。报告强调了知识库在知识管理(KM)中的核心地位,尤其是在生成式人工智能(GenAI)时代,一个结构良好的知识库是知识管理成功的关键,反之则可能成为整个知识管理实践的失败点。…...

【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项 1、操作步骤1-5: 安装与启动:安装成功后,在桌面或开始菜单找到软件图标,双击启动。 导入图片:进入软件主界面,点击 “导入图片” 按钮&a…...
PyTorch 中cumprod函数计算张量沿指定维度的累积乘积详解和代码示例
torch.cumprod 是 PyTorch 中用于 计算张量沿指定维度的累积乘积(cumulative product) 的函数。 1、函数原型 torch.cumprod(input, dim, *, dtypeNone, outNone) → Tensor参数说明: 参数说明input输入张量dim累积乘积的维度dtype可选&…...
docker镜像下载到本地,并导入服务器
应用场景 : 本地环境可以连接外网,但服务器连接不了外网,直接用docker pull 命令执行拉起镜像报异常。 1.本地拉取xuxueli/xxl-job-admin:2.2.0及查看所有下载的镜像 docker pull xuxueli/xxl-job-admin:2.2.0 docker images 2.保存镜像到…...

数据通信与计算机网络——数字传输
主要内容 数字到数字转换 线路编码 线路编码方案 块编码 扰动 模拟到数字转换 脉冲码调制(PCM) Delta调制(DM) 传输模式 并行传输 串行传输 一、数字到数字转换 将数字数据转换为数字信号涉及三种技术: 线…...
oracle 归档日志与RECOVERY_FILE_DEST 视图
1. RECOVERY_FILE_DEST 视图的作用 RECOVERY_FILE_DEST 是 Oracle 数据库用于 管理快速恢复区(Fast Recovery Area, FRA) 的一个视图。FRA 是 Oracle 提供的一种集中存储恢复相关文件(如归档日志、备份文件、闪回日志等)的区域。…...

黄柏基因组-小檗碱生物合成的趋同进化-文献精读142
Convergent evolution of berberine biosynthesis 小檗碱生物合成的趋同进化 摘要 小檗碱是一种有效的抗菌和抗糖尿病生物碱,主要从不同植物谱系中提取,特别是从小檗属(毛茛目,早期分支的真双子叶植物)和黄柏属&…...

前端杂货铺——TodoList
个人简介 👀个人主页: 前端杂货铺 🙋♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…...

Spring Boot SSE流式输出+AI消息持久化升级实践:从粗暴到优雅的跃迁
在 AI 应用落地过程中,我们常常需要将用户和 AI 的对话以“完整上下文”的形式持久化到数据库中。但当 AI 回复非常长,甚至接近上万字时,传统的单条消息保存机制就会出问题。 在本篇文章中,我将深入讲解一次实际项目中对 对话持久…...
camera功能真的那么难用吗
背景 Android开发工作过程中,经常需要用到camera相关能力,比如:人脸识别,ai识别,拍照预览,摄像头录制等等需求。都需要使用到camera,且需要拿到camera的预览数据。但是每次开发这块代码都比较繁…...

Model Context Protocol (MCP) 是一个前沿框架
微软发布了 Model Context Protocol (MCP) 课程:mcp-for-beginners。 Model Context Protocol (MCP) 是一个前沿框架,涵盖 C#、Java、JavaScript、TypeScript 和 Python 等主流编程语言,规范 AI 模型与客户端应用之间的交互。 MCP 课程结构 …...
SQL Server 日期时间类型全解析:从精确存储到灵活转换
SQL Server 日期时间类型全解析:从精确存储到灵活转换 一、引言:日期时间处理的核心挑战 在数据管理中,日期时间类型是最常用却最容易出错的数据类型之一。不同业务场景对时间精度、时区感知、存储效率的需求差异极大: 金融交易…...
Android Test3 获取的ANDROID_ID值不同
Android Test3 获取的ANDROID_ID值不同 这篇文章来说明上一篇文章中说到的一个现象:在同一个项目中,创建不同的 app module,运行同一段测试代码,获取到的 ANDROID_ID 的值不同。 我也是第一次认真研究这个现象,这个还…...