不同字符的最小子序列


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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章