Lexicographically Smallest¶
Table of Contents¶
- 402. Remove K Digits (Medium)
- 1673. Find the Most Competitive Subsequence (Medium)
- 316. Remove Duplicate Letters (Medium)
- 1081. Smallest Subsequence of Distinct Characters (Medium)
- 321. Create Maximum Number (Hard)
- 2030. Smallest K-Length Subsequence With Occurrences of a Letter (Hard)
402. Remove K Digits¶
1673. Find the Most Competitive Subsequence¶
316. Remove Duplicate Letters¶
# Monotonic Stack
def removeDuplicateLetters(s: str) -> str:
stack = []
seen = set()
last = {c: i for i, c in enumerate(s)}
for i, c in enumerate(s):
if c not in seen:
while stack and c < stack[-1] and i < last[stack[-1]]:
seen.discard(stack.pop())
seen.add(c)
stack.append(c)
return "".join(stack)
s = "cbacdcbc"
print(removeDuplicateLetters(s)) # acdb