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

不同字符的最小子序列

作者: 小幸运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;
        }
    };
    

    相关文章

      网友评论

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

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