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)
相关推荐
岁岁岁平安20 分钟前
本机 MongoDB 注册系统服务、启用security认证
数据库·python·mongodb
程序员大雄学编程41 分钟前
用Python来学微积分30-微分方程初步
开发语言·python·线性代数·数学·微积分
我爱学习_zwj1 小时前
App通信:HTTP与JSON全解析
python
机器学习ing.1 小时前
U-Net保姆级教程:从原理到医学细胞分割实战(PyTorch版)!
人工智能·pytorch·python·深度学习·机器学习
yzx9910132 小时前
基于Django的智慧园区管理系统开发全解析
后端·python·django
sunsunyu032 小时前
视频转图片工具
python·音视频
软件开发技术深度爱好者2 小时前
Python类中方法种类介绍
开发语言·python
用户8356290780512 小时前
使用Python合并Word文档:实现高效自动化办公
后端·python
2301_807997383 小时前
代码随想录-day26
数据结构·c++·算法·leetcode
闭着眼睛学算法3 小时前
【双机位A卷】华为OD笔试之【排序】双机位A-银行插队【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od