zoukankan      html  css  js  c++  java
  • 【leetcode】316. Remove Duplicate Letters

    题目如下:

    Given a string which contains only lowercase letters, remove duplicate letters so that every letter appear once and only once. You must make sure your result is the smallest in lexicographical order among all possible results.

    Example 1:

    Input: "bcabc"
    Output: "abc"
    

    Example 2:

    Input: "cbacdcbc"
    Output: "acdb"

    解题思路:因为要求字典序最小,所以先从'a'开始,找出第一个出现的'a',如果在这个'a'后面其余的字符至少会出现一次,则表示满足条件;如果'a'不满足这个条件,则继续判断'b',直到找出第一个满足条件并且字典序最小的字符。找到这个字典序最小的字符(假设为i)后,那么表示这个'i'可以保留,'i'之前的所有字符以及'i'之后其他的'i'都删除掉,在剩下的字符串中又继续从'a'开始,找到满足条件的除i以为最小的字典序字符。一直循环,直到所有不同字符都找到一个满足这个条件的即可。

    代码如下:

    class Solution(object):
        def removeDuplicateLetters(self, s):
            """
            :type s: str
            :rtype: str
            """
            dic = {}
            for i,v in enumerate(s):
                dic[v] = dic.setdefault(v,[]) + [i]
            res = ''
            origin_len = len(dic)
    
            while len(res) < origin_len:
                #print dic
                for (char) in range(ord('a'),ord('a')+26):
                    char = chr(char)
                    if char not in dic:
                        continue
                    flag = True
                    for key in dic.iterkeys():
                        if char == key:
                            continue
                        elif dic[char][0] > dic[key][-1]:
                            flag = False
                            break
                    if flag:
                        res += char
                        inx = dic[char][0]
                        del dic[char]
    
                        import bisect
                        for key in dic.iterkeys():
                            del_inx = bisect.bisect_left(dic[key],inx)
                            dic[key] = dic[key][del_inx:]
                        break
            return res
  • 相关阅读:
    webpack4--uglifyjs-webpack-plugin
    webpack4--MiniCssExtractPlugin(extract-text-webpack-plugin)
    webpack--CleanWebpackPlugin is not a constructor
    Core3.0全局捕获异常
    Core3.0返回的数据格式xml或json
    Core3.0读取appsetting.json中的配置参数
    Core3.0发布到IIS的流程
    asp.net MVC Session锁的问题
    记一次Ajax请求MVC调优
    博客园主题皮肤
  • 原文地址:https://www.cnblogs.com/seyjs/p/10496058.html
Copyright © 2011-2022 走看看