去除重复字母

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

  • 输入:s = “bcabc”
    输出:”abc”

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

1
2
3
4
5
6
7
8
9
10
11
12
13
var removeDuplicateLetters = function(s) {
var stack = []
for (var i = 0; i < s.length; i++) {
var char = s[i]
if (stack.indexOf(char) > -1) continue
// 使用indexOf(xx, i)取代 lastIndexOf(xx)减少遍历次数会更快
while (stack.length > 0 && stack[stack.length - 1] > char && s.indexOf(stack[stack.length - 1], i) > i) {
stack.pop()
}
stack.push(char)
}
return stack.join('')
};