1class Solution:2def removeDuplicateLetters(self, s: str) -> str:34last_occ = {}5stack = []6visited = set()78for i in range(len(s)):9last_occ[s[i]] = i1011for i in range(len(s)):1213if s[i] not in visited:14while stack and stack[-1] > s[i] and last_occ[stack[-1]] > i:15visited.remove(stack.pop())1617stack.append(s[i])18visited.add(s[i])1920return "".join(stack)