第七十四天:力扣316题,去除重复字母
地址:leetcode-cn.com/problems/re…
思路:stack作为栈按字典序存放 如果stack已经存放过了,说明是按照当前字典序最小排列的,所以continue 如果遇见了比栈顶小的并且在字符串s之后仍然可以遇到栈顶的字符全部弹出; 将该小的入栈
var removeDuplicateLetters = function (s) {
var stack = []
for (var i = 0; i < s.length; i++) {
var char = s[i]
if (stack.indexOf(char) > -1) continue
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('')
}
执行用时:100 ms, 在所有 JavaScript 提交中击败了63.46%的用户
内存消耗:39.5 MB, 在所有 JavaScript 提交中击败了68.75%的用户