给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。

    示例 1:

    输入:s = “bcabc”
    输出:”abc”
    示例 2:

    输入:s = “cbacdcbc”
    输出:”acdb”

    1. /**
    2. * @param {string} s
    3. * @return {string}
    4. */
    5. var removeDuplicateLetters = function (s) {
    6. const stack = [];
    7. for (let i = 0, len = s.length; i < len; i += 1) {
    8. const str = s[i];
    9. if (stack.indexOf(str) !== -1) continue;
    10. // 后面这个i表示从i往后搜索看看是否存在
    11. while (
    12. stack[stack.length - 1] > str &&
    13. s.indexOf(stack[stack.length - 1], i) > i
    14. ) {
    15. stack.pop();
    16. }
    17. stack.push(str)
    18. }
    19. return stack.join("")
    20. };

    image.png