leetcode——316. 去除重复字母
Posted 欣姐姐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode——316. 去除重复字母相关的知识,希望对你有一定的参考价值。
这道题也不是我自己想出来的。。。
class Solution(object): def removeDuplicateLetters(self, s): """ :type s: str :rtype: str """ counts = {} coun=set(s) for c in coun: counts[c]=s.count(c) stack, stacked = [‘0‘], set() # stack为答案,放置哨兵,stacked为stack中已有的字符 for c in s: if c not in stacked: while c < stack[-1] and counts[stack[-1]]: # 当栈顶在后面还有且大于当前字符时弹出 stacked.remove(stack.pop()) stack.append(c) stacked.add(c) counts[c] -= 1 return ‘‘.join(stack[1:])
执行用时 :32 ms, 在所有 python 提交中击败了62.20%的用户
内存消耗 :11.7 MB, 在所有 python 提交中击败了44.44%的用户
——2019.11.4
以上是关于leetcode——316. 去除重复字母的主要内容,如果未能解决你的问题,请参考以下文章
2021-08-31:去除重复字母。给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。力扣316。