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

(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)
}
http://www.dtcms.com/a/237031.html

相关文章:

  • leetcodeT3170
  • Xilinx IP 解析之 Block Memory Generator v8.4 ——01-手册重点解读(仅 Native R
  • RAG检索系统的两大核心利器——Embedding模型和Rerank模型
  • 【第六篇】 SpringBoot的日志基础操作
  • Sentry 接口返回 Status Code 429 Too Many Requests
  • 编程关键字
  • Nifi数据流单节点部署
  • 矩形相交的面积 - 华为OD机试真题(Java题解)
  • C++算法训练营 Day11 栈与队列(2)
  • [文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS
  • C++.OpenGL (12/64)光照贴图(Lightmaps)
  • 【E9批量执行SQL】
  • 【论文解读】Toolformer: 语言模型自学使用工具
  • 金融预测模型开发:数据预处理、机器学习预测与交易策略优化
  • 复旦联合百度发布Hallo4:让AI肖像“活”起来!新型扩散框架实现高保真音频驱动动画生成!
  • 轻量高效的B站视频下载解析
  • 【CSS-5】深入理解CSS复合选择器:提升样式表的精确性与效率
  • React Hooks 示例项目
  • 大话软工笔记—需求调研概述
  • 探针有哪些?探测方法有哪些?
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
  • vue3+dify从零手撸AI对话系统
  • 深入剖析MySQL存储架构,索引结构,日志机制,事务提交流程
  • Sklearn 机器学习 缺失值处理 填充数据列的缺失值
  • Oracle 客户端深度指南:SQL Developer 与 PL/SQL Developer 全面安装使用教程
  • SpringAI Alibaba实战文生图
  • Python Day45
  • LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
  • 量子计算突破:新型超导芯片重构计算范式
  • Three.js实现梦幻星光漩涡特效 - 从原理到实现