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

Leetcode 去除重复字母

在这里插入图片描述


✅ 关键点

  1. count[] 表示的是“剩余出现次数”,在遍历每个字符时都要执行 count[c - 'a']--;,这是必须的步骤,不管该字符是否已经在栈中;

  2. 使用**单调栈(递增的字典序)**维护当前已选字符构成的“局部最优子结果”,最终逆序输出即可得到全局最优结果;

  3. 如果当前字符 不在栈中,那么就尝试把它加入栈;

    • 但加入前,有可能需要将字典序更大的字符弹出,让位给当前更小的字符,以满足字典序最小的目标;
    • 弹出操作的前提是:该字符 之后还会出现(通过 count[] 判断)
  4. 弹出时要记得将 inStack[] 标记为 false,加入时则标记为 true,以确保每个字符在栈中只出现一次。


✅ 可以这样总结这个“让位逻辑”:

当前字符要想成功“插队”,它必须比栈顶更小,而且栈顶字符不能是“最后一次机会”,这样才有资格被踢出。


✍️ 补充一句更直观的通俗解释:

你可以把这个过程类比为“最小字典序的选秀”:

  • 每个字符都想进最终的结果队伍(栈);
  • 如果一个新的候选人(当前字符)进来,发现他更“优秀”(字典序更小);
  • 那就要判断当前队伍里的末尾成员是否可以被替换掉:
    • 如果末尾成员 还会在之后出现,就可以被替换;
    • 否则就必须留下他(他已经是唯一一次出现了);
  • 最终构建出的是一支去重后最强(字典序最小)的队伍

java solution

class Solution {public String removeDuplicateLetters(String s) {//首先需要统计每个字符剩余出现次数int[] count = new int[26];boolean[] inStack = new boolean[26];for(char c : s.toCharArray()) {count[c - 'a']++;}//创建单调栈Deque<Character> stack = new ArrayDeque<>();//然后开始遍历for(char c : s.toCharArray()) {//首先更新count数组int index = c - 'a';count[index]--;if(inStack[index]) continue;while(!stack.isEmpty() && c < stack.peek() && count[stack.peek() - 'a'] > 0) {inStack[stack.pop() - 'a'] = false;}stack.push(c);inStack[c - 'a'] = true;}StringBuilder sb = new StringBuilder();while(!stack.isEmpty()) {sb.append(stack.pop());}return sb.reverse().toString();}
}

相关文章:

  • LeetCode算法题(Go语言实现)_45
  • Spring Boot 使用 QQ 企业邮箱发送邮件的完整指南(含 535 错误排查)
  • Redis奇幻之旅(三)1.redis客户端与服务端
  • 【Python爬虫】简单案例介绍4
  • PE文件(十五)绑定导入表
  • 【论文阅读】MOE奠基论文《Adaptive Mixtures of Local Experts》
  • C++基础精讲-07
  • TCPIP详解 卷1协议 五 Internet协议
  • Java 企业级应用:SOA 与微服务的对比与选择
  • SpringBoot-切换用户列表并显示用户信息
  • HarmonyOS应用开发的工程目录结构
  • Android Studio 实现自定义全局悬浮按钮
  • WebSocket与MQTT
  • 【HDFS入门】HDFS核心组件Secondary NameNode角色职责与运行机制解析
  • 【MySQL高级】事务,存储引擎,索引(一)
  • 2024年蓝桥杯第十五届CC++大学B组真题及代码
  • 罗庚机器人:机器人打磨领域的先行者
  • 基于Windows通过nginx代理访问Oracle数据库
  • 深入理解 PyTorch:从入门到精通的深度学习框架
  • 基于Oracle ADG通过dblink创建物化视图同步数据到目标库
  • 中国以优化营商环境为支点,为全球企业提供可预期市场环境
  • 夜读丨古代有没有近视眼?
  • 司法部谈民营经济促进法:对违规异地执法问题作出禁止性规定
  • 复旦设立新文科发展基金,校友曹国伟、王长田联合捐赠1亿元
  • 媒体起底“速成洋文凭”灰产链,专家:我们要给学历“祛魅”
  • 观察|印巴交火开始升级,是否会演变为第四次印巴战争?