8.17 - hard - 63

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容