Python | Leetcode Python题解之第316题去除重复字母

题目:

题解:

python 复制代码
class Solution:
    def removeDuplicateLetters(self, s: str) -> str:
        vis = defaultdict(int)
        cnt = defaultdict(int)
        for ch in s: cnt[ch] += 1
        queue = []
        for ch in s:
            if vis[ch] == 0:
                while queue and queue[-1] > ch and cnt[queue[-1]]:
                    vis[queue.pop()] = 0
                if not queue or queue != ch: queue.append(ch)
                vis[ch] = 1
            cnt[ch] -= 1
        return "".join(queue)
相关推荐
Nuanyt13 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
武天旭15 小时前
AI安全--AI大模型的毒性偏见与安全对齐实践
人工智能·python·深度学习
圣保罗的大教堂16 小时前
leetcode 3736. 最小操作次数使数组元素相等 III 简单
leetcode
视觉小萌新16 小时前
AI Class 3 · Chapter 2-3:函数、异常、文件读写+JSON / JSONL 读写(小白版)
人工智能·python·json
文丑颜不良啊17 小时前
LeetCode1881~1990题目解析
java·leetcode
小小张说故事17 小时前
Python 的 obj.x 到底按什么顺序找?拆开数据描述符、实例字典和 __getattr__ 那条优先级链
python
用户114818678948418 小时前
水印的实现方式逻辑
前端·python
贾公子18 小时前
从单条内容到账号维度——AIGC 风险评分的工程实现
后端·python
文丑颜不良啊20 小时前
LeetCode1861~1880题目解析
java·leetcode
文丑颜不良啊20 小时前
LeetCode1921~1940题目解析
java·leetcode