Leetcode 316 Solution

This article provides solution to leetcode question 316 (remove-duplicate-letters)

https://leetcode.com/problems/remove-duplicate-letters

Solution

class Solution: def removeDuplicateLetters(self, s: str) -> str: cnt = collections.defaultdict(int) for ch in s: cnt[ch] += 1
stack = [] added = set() for ch in s: cnt[ch] -= 1
if ch in added: continue
while stack and ch < stack[-1] and cnt[stack[-1]] >= 1: added.remove(stack[-1]) stack.pop()
added.add(ch) stack.append(ch)
return "".join(stack)