1/**2* @param {string} s3* @return {string}4*/5var removeDuplicateLetters = function (s) {6const lastOccurrence = {};7for (let i = 0; i < s.length; i++) {8lastOccurrence[s[i]] = i;9}1011const stack = [];12const visited = new Set();1314for (let i = 0; i < s.length; i++) {15if (visited.has(s[i])) {16continue;17}1819while (20stack.length > 0 &&21s[i] < stack[stack.length - 1] &&22i < lastOccurrence[stack[stack.length - 1]]23) {24visited.delete(stack.pop());25}2627visited.add(s[i]);28stack.push(s[i]);29}3031return stack.join("");32};