1081. Smallest Subsequence of Distinct Characters
Medium
Given a string s
, return the lexicographically smallest subsequence of s
that contains all the distinct characters of s
exactly once.
Example 1:
Input: s = "bcabc"
Output: "abc"
Example 2:
Input: s = "cbacdcbc"
Output: "acdb"
Constraints:
1 <= s.length <= 1000
s
consists of lowercase English letters.
Note: This question is the same as 316: https://leetcode.com/problems/remove-duplicate-letters/
class Solution:
def smallestSubsequence(self, s: str) -> str:
stack = []
indexes = {}
visited = set()
for index, char in enumerate(list(s)):
indexes[char] = index
for index, char in enumerate(list(s)):
if char not in visited:
while stack and stack[-1] > char and index < indexes[stack[-1]]:
c = stack.pop()
visited.remove(c)
stack.append(char)
visited.add(char)
return ''.join(stack)
Last updated