美文网首页
不同字符的最小子序列

不同字符的最小子序列

作者: 小幸运Q | 来源:发表于2021-05-20 18:50 被阅读0次

image.png

choose记录筛选中的字符,pop掉前面在后面有出现而且比当前i更大的元素。

class Solution {
public:
    string smallestSubsequence(string s) {
        if(s==""){
            return "";
        }
        string r="";
        unordered_map<char,int>res,choose;
        for(int i=0;i<s.length();i++){
            if(res.count(s[i])){
                res[s[i]]++;
            }
            else{
                res[s[i]]=1;
            }
        }

        for(int i=0;i<s.length();i++){
            res[s[i]]--;
            if(r.length()){
                if(choose[s[i]]==0){
                    while(r.back()>s[i] && res[r.back()]>0){
                        choose[r.back()]=0;
                        r.pop_back();
                    }
                    r+=s[i];
                    choose[s[i]]=1;
                }
            }
            else{
                choose[s[i]]=1;
                r+=s[i];
            }
        }
        return r;
    }
};

相关文章

  • 不同字符的最小子序列

    choose记录筛选中的字符,pop掉前面在后面有出现而且比当前i更大的元素。

  • LeetCode 第 1081 题:不同字符的最小子序列

    说明:本文是根据自己在 LeetCode 中文网站上发布的题解写成的,即自己转载了自己的文章。原文地址:https...

  • 最大公共子序列(LCS)

    子序列 子序列不要求字符连续(这与串不同) 公共子序列 两个字符串中的相同的子序列 最大公共子序列的例子字符串 X...

  • LeetCode #1081 Smallest Subseque

    1081 Smallest Subsequence of Distinct Characters 不同字符的最小子...

  • LintCode 不同的子序列

    给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。 子序列字符串是原始字符串通过删除一些(或零个)产生的...

  • 不同的子序列

    给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。 子序列字符串是原始字符串通过删除一些(或零个)产生的...

  • LintCode-不同的子序列-动态规划

    描述 给出字符串S和字符串T,计算S的不同的子序列中T出现的个数。 子序列字符串是原始字符串通过删除一些(或零个)...

  • 自学用13.3序列化

    序列化:运行中的对象->字符序列(可以储存的字符数据) 反序列化:字符序列->运行中的对象 功能可以拿来用的地...

  • 常见类

    String ,StringBuilder,StringBuffer 不可变字符序列:String 可变字符序列:...

  • 转义字符

    转义序列 含义\ \ 字符' ' 字符" " 字符? ? 字符\a Alert 或 bell //...

网友评论

      本文标题:不同字符的最小子序列

      本文链接:https://www.haomeiwen.com/subject/pscolltx.html