316. Remove Duplicate Letters
一道greedy的题目,也不是很难想,就是挨个挨个朝stack里放,因为要维持一定的顺序,所以用stack比较合适
class Solution(object):
def removeDuplicateLetters(self, s):
"""
:type s: str
:rtype: str
"""
stack = []
h = {}
for c in s:
if c in h:
h[c] += 1
else:
h[c] = 1
for c in s:
if c in stack:
h[c] -= 1
continue
while stack and stack[-1] >= c and h[stack[-1]] > 1:
val = stack.pop()
h[val] -= 1
stack.append(c)
return "".join(stack)
网友评论