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

leetcodeT3170

题目:

算法分析:

单调栈 + 排序应用

考察删除*和其前面的最小字典的字符,要使得剩余的字符字典序最小,考虑删除的字符的位置: 假设删除的字符为c

1.如果删除最前面的c 整体的字符串字典序应该最大

2. 如果删除最后面的c 整体的字符串字典序最大

因此算法的整体思路:

从左到右遍历 s,用 26 个栈记录遍历过的每种字母的下标。

遇到 *,弹出最小字母栈(第一个非空栈)的栈顶。

最后把剩余下标对应的字母按顺序串起来,即为答案。

 代码:

class Solution {public String clearStars(String s) {// 建立26个栈List<Integer>[] stks = new  ArrayList[26];Arrays.setAll(stks, i -> new ArrayList<>());int n = s.length();for(int i = 0; i < n; i++) {char c = s.charAt(i);if(c != '*') {stks[c - 'a'].add(i);} else {for(List<Integer> stk: stks) {if(!stk.isEmpty()) {stk.removeLast();break;}} }}List<Integer> idx = new ArrayList<>();for(List<Integer> stk: stks) {idx.addAll(stk);}Collections.sort(idx);StringBuilder sb = new StringBuilder();for(int i: idx) {sb.append(s.charAt(i));}return sb.toString();}
}

http://www.dtcms.com/a/237030.html

相关文章:

  • 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实现梦幻星光漩涡特效 - 从原理到实现
  • 罗尔斯·罗伊斯数字孪生技术赋能航空发动机运维革新:重构维护范式,驱动行业低碳转型