- 栈
function smallestSubsequence(s: string): string {
const stack: string[] = [];
for (let i = 0; i < s.length; ++i) {
if (stack.includes(s[i])) {
continue;
}
while (
stack.length
&& stack[stack.length - 1] > s[i]
&& s.lastIndexOf(stack[stack.length - 1]) > i
) {
stack.pop();
}
stack.push(s[i]);
}
return stack.join('');
};