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

去除重复字母(LeetCode)

题目

给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

解题


def removeDuplicateLetters(s):last_occurrence = {ch: i for i, ch in enumerate(s)}  # 记录每个字符最后出现的位置stack = []  # 用于构建结果的栈added = set()  # 记录已经添加到栈中的字符for i, ch in enumerate(s):if ch in added:continue  # 如果字符已经在栈中,跳过while stack and ch < stack[-1] and i < last_occurrence[stack[-1]]:removed_char = stack.pop()  # 移除栈顶字符added.remove(removed_char)  # 从集合中删除移除的字符stack.append(ch)  # 将当前字符压入栈added.add(ch)  # 添加当前字符到集合return ''.join(stack)# 示例用法
s = "cbacdcbc"
result = removeDuplicateLetters(s)
print(result)  # 输出 "acdb"

http://www.mrgr.cn/news/15904.html

相关文章:

  • 您下一款项目管理工具何必是它,10款软件推荐
  • Google play应用老包突然被暂停和删除了,什么原因?
  • IPython 使用技巧整理
  • 基于医学图像配准软件 ANTs(Advanced Normalization Tools)提取脑图像数值并与临床量表计算相关
  • 基于Spring的Uniapp自动更新实现方法
  • Vue -- 总结 02
  • 202408830使用python3给BGR3的裸图加上BMP图的文件头
  • 第 8 章 数据的家——MySQL的数据目录
  • 【Shell】在 Linux 中,如何查看服务器上僵尸进程的数量
  • DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)
  • 视觉Mamba综述——Visual Mamba: A Survey and New Outlooks论文总结
  • 介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
  • 【C++ 面试 - 内存管理】每日 3 题(十)
  • 安嘉空间:智慧科技守护空间健康
  • 华为云征文|Flexus云服务器X,云上性能新飞跃,开启业务增长新纪元
  • 快速掌握GPTEngineer:用AI创建网页应用的实用教程
  • 使用多尺度C-LSTM进行单变量时间序列异常检测
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调合并-ms-swift-单机单卡-V100(十三)
  • 【面试经验】美团实习时mentor讲的面试技巧
  • Keil5 Debug模式Watch窗口添加的监控变量被自动清除