当前位置: 首页 > 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.lqws.cn/news/204913.html

相关文章:

  • PHP文件包含漏洞详解:原理、利用与防御
  • 解决国产GD32下载的工程无法编译
  • 两种Https正向代理的实现原理
  • Python 字符串与列表核心操作全解:从独有功能到实战场景
  • Redis故障转移
  • 探索Python融合地学:斗之气七段(运算符)
  • 在命令行直接执行可以执行成功,加入crontab定时任务执行shell脚本不成功失败的问题解决方法
  • 晶圆Map图芯片拉选
  • MATLAB-电偶极子所产出的电磁场仿真
  • gRPC 的四种通信模式完整示例
  • RSA加密算法:非对称密码学的基石
  • 磁盘修复工具
  • Day47
  • Global Security Markets 第 10 章衍生品知识点总结​
  • BeckHoff--MES数据交互 MQ TRANCE API (MQ 追溯 API - 系统概述和命令参考)
  • Go爬虫开发学习记录
  • IEC 61347-1:2015 灯控制装置安全通用要求详解
  • PyTorch 中cumprod函数计算张量沿指定维度的累积乘积详解和代码示例
  • 视频字幕质量评估的大规模细粒度基准
  • Docker基础(二)
  • Vue Fragment vs React Fragment
  • 洛谷P12170 [蓝桥杯 2025 省 Python B] 攻击次数
  • 《Vuejs设计与实现》第 8 章(挂载与更新)
  • vue注册自定义指令
  • 罗尔斯·罗伊斯数字孪生技术赋能航空发动机运维革新:重构维护范式,驱动行业低碳转型
  • 第10篇《数据库中间件集成监控与全链路观测系统设计》
  • 81 实战一:给root目录扩容
  • Java中栈的多种实现类详解
  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-信号标志、互斥锁、信号量篇
  • Cell-o1:强化学习训练LLM解决单细胞推理问题