• 【leetcode】1081. Smallest Subsequence of Distinct Characters


    题目如下:

    Return the lexicographically smallest subsequence of text that contains all the distinct characters of text exactly once.

    Example 1:

    Input: "cdadabcc"
    Output: "adbc"
    

    Example 2:

    Input: "abcd"
    Output: "abcd"
    

    Example 3:

    Input: "ecbacba"
    Output: "eacb"
    

    Example 4:

    Input: "leetcode"
    Output: "letcod"
    

    Note:

    1. 1 <= text.length <= 1000
    2. text consists of lowercase English letters.

    解题思路:首先找出每个字母在text中的最大下标值并存入inx列表,接下来把text中的出现的每个字母的存入list并排好序:如果list[0]的字母在text中小标的最小值小于或者inx中所有元素的最小值,则表示该字母可以放在结果的第一个位置;如果不行则继续检查list[1]的字母,直到找出符合条件的字母放在第一位,然后在inx和list中删掉这个字母所对应的记录。之后继续循环查找,直到所有字母都找到为止。

    代码如下:

    class Solution(object):
        def smallestSubsequence(self, text):
            """
            :type text: str
            :rtype: str
            """
            dic = {}
            for i in range(len(text)-1,-1,-1):
                if text[i] not in dic:
                    dic[text[i]] = i
    
            tl = sorted(dic.iterkeys())
            res = ''
            start = 0
            while len(tl) > 0:
                for i in range(len(tl)):
                    inx = text.find(tl[i],start)
                    if inx <= min(dic.itervalues()):
                        res += tl[i]
                        start = inx + 1
                        del dic[tl[i]]
                        del tl[i]
                        break
            return res
  • 相关阅读:
    ng2-bootstrap的modal嵌套时无法滚动的情况
    oracle自动补0
    webservice 从客户端中检测到有潜在危险的 Request.Form 值
    树莓派花生壳
    ubuntu E: Could not get lock /var/lib/dpkg/lock
    树莓派配置静态ip
    解决PL/SQL查询结果乱码的问题
    批处理脚本命令行方式关闭Windows服务
    最简单的分享到微博代码
    Select的onchange事件
  • 原文地址:https://www.cnblogs.com/seyjs/p/11026152.html
Copyright © 2020-2023  润新知